Fehlerhaftes Programm

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fehlerhaftes Programm

    Hi ich habe einen Source Code der fehlerhaft ist kann mir vllt jemand helfen.
    Danke schonmal


    Erstes Beispiel:
    Eingabe dreier Strings welche so ausgegeben werden wie unten im Beispiel.

    Beispiel:
    Eingabe: "Harald", "Peter", "Meierhuber"
    Ausgabe:MEIERHUBER, Harald, Peter

    Bisheriger Code

    Java-Quellcode

    1. import java.util.Scanner;
    2. public class ue1b {
    3. static final Scanner eingabe2 = new Scanner(System.in);
    4. static String stringEingabe(String prompt) {
    5. do {
    6. System.out.println(prompt);
    7. if (eingabe2.hasNextLine()) {
    8. return eingabe2.nextLine();
    9. } else
    10. eingabe2.nextLine();
    11. } while (true);
    12. }
    13. static int zaehleZeichen(String e){
    14. int i=0;
    15. for(int a=0;a<e.length();a++){
    16. i++;
    17. }
    18. return i;
    19. }
    20. static String großZeichen(String x){
    21. char b;
    22. String we="";
    23. for(int a=0;a<x.length();a++){
    24. b=x.charAt(a);
    25. b=Character.toUpperCase(b);
    26. we+=b;
    27. }
    28. return we;
    29. }
    30. static String ordnung(String ber, String ber2){
    31. String pos="";
    32. pos=","+ber+","+ber2;
    33. return pos;
    34. }
    35. public static void main(String[] args) {
    36. // TODO Auto-generated method stub
    37. String s1=stringEingabe("Bitte ersten String eingeben");
    38. String s2=stringEingabe("Bitte zweiten String eingeben");
    39. String s3=stringEingabe("Bitte dritten String eingeben");
    40. int anz=zaehleZeichen(s1);
    41. int anz2=zaehleZeichen(s2);
    42. int anz3=zaehleZeichen(s3);
    43. String er="";
    44. if(anz > anz2 && anz >anz3){
    45. String q="";
    46. System.out.println("Der erste String ist der Groeßte");
    47. System.out.print(großZeichen(s1));
    48. if(anz2>anz3){
    49. q=ordnung(s2,s3);
    50. }else{
    51. q=ordnung(s3,s2);
    52. }
    53. System.out.println(q);
    54. }
    55. if(anz2 > anz && anz2> anz3){
    56. String q="";
    57. System.out.println("Der zweite String ist der Groeßte");
    58. System.out.print(großZeichen(s2));
    59. if(anz>anz3){
    60. q=ordnung(s1,s3);
    61. }else{
    62. q=ordnung(s3,s1);
    63. }
    64. System.out.println(q);
    65. if(anz3> anz && anz3> anz2){
    66. System.out.println("Der dritte String ist der Groeßte");
    67. System.out.print(großZeichen(s3));
    68. if(anz>anz2){
    69. q=ordnung(s1,s2);
    70. }else{
    71. q=ordnung(s2,s1);
    72. }
    73. System.out.println(q);
    74. }
    75. }
    76. }
    77. }
    Alles anzeigen
    xnu&#305;l feel free
    &#477;ldd&#592; feel different
    s&#653;opu&#305;&#653; feel bad
  • Ganz eindeutig - JA!


    Im Ernst, es würde schon viel helfen wenn folgende Info dabei wäre:
    1. gewünschtes Verhalten
    2. fehlerhaftes Verhalten
    3. Was soll das Programm tun (in Worten). Wobei ... UML akzeptiere ich auch.

    Aus Deine Frage kann ich nicht ableiten, ob das ein Beispiel für einen Fehler, oder ein Beispiel für die korrekte Funktion ist.

    Um das beschriebene Verhalten zu erreichen, reicht übrigens folgender Code:

    Java-Quellcode

    1. import java.util.Scanner;
    2. public class ue1b {
    3. static final Scanner eingabe2 = new Scanner(System.in);
    4. static String stringEingabe(String prompt) {
    5. do {
    6. System.out.println(prompt);
    7. if (eingabe2.hasNextLine()) {
    8. return eingabe2.nextLine();
    9. } else
    10. eingabe2.nextLine();
    11. } while (true);
    12. }
    13. public static void main(String[] args) {
    14. // TODO Auto-generated method stub
    15. String s1=stringEingabe("Bitte ersten String eingeben");
    16. String s2=stringEingabe("Bitte zweiten String eingeben");
    17. String s3=stringEingabe("Bitte dritten String eingeben");
    18. System.out.println(s3.toUpperCase() + ", " + s1 + ", " + s2);
    19. }
    20. }
    Alles anzeigen
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von wasawasa ()

  • Also als erstes wuerd ich beim Vergleich groesser gleich nehmen anstatt groesser, da deckst du mehr ab (weniger fehleranfaellig) und es ist im Prinzip das Gleiche.
    Denn ist doch klar, wenn du drei mal "Harald" eingibst, dann ist keiner der drei groesser als die anderen beiden.

    Ausserdem ist das hier an der falschen Stelle:

    Quellcode

    1. if(anz3> anz && anz3> anz2){

    Und ein "else" wuerde es auch tun. ;)
    Und bei dem in der Mitte halt "else if" und nicht "if", ist ja alles alternativ.

    Das hier sollte funzen:

    Java-Quellcode

    1. import java.util.Scanner;
    2. public class ue1b {
    3. static final Scanner eingabe2 = new Scanner(System.in);
    4. static String stringEingabe(String prompt) {
    5. do {
    6. System.out.println(prompt);
    7. if (eingabe2.hasNextLine()) {
    8. return eingabe2.nextLine();
    9. } else
    10. eingabe2.nextLine();
    11. } while (true);
    12. }
    13. static String ordnung(String ber, String ber2){
    14. int size1 = ber.length();
    15. int size2 = ber2.length();
    16. if (size1 > size2) return ber+","+ber2;
    17. else return ber2+","+ber2;
    18. }
    19. public static void main(String[] args) {
    20. // TODO Auto-generated method stub
    21. String s1=stringEingabe("Bitte ersten String eingeben");
    22. String s2=stringEingabe("Bitte zweiten String eingeben");
    23. String s3=stringEingabe("Bitte dritten String eingeben");
    24. int anz = s1.length();
    25. int anz2 = s2.length();
    26. int anz3 = s3.length();
    27. if(anz >= anz2 && anz >= anz3){
    28. System.out.println("Der erste String ist der Groeßte");
    29. System.out.print(s1.toUpperCase());
    30. System.out.println(","+ordnung(s2,s3));
    31. }
    32. else if(anz2 >= anz && anz2 >= anz3) {
    33. System.out.println("Der zweite String ist der Groeßte"); System.out.print(s2.toUpperCase());
    34. System.out.println(","+ordnung(s1,s3));
    35. }
    36. else {
    37. System.out.println("Der dritte String ist der Groeßte");
    38. System.out.print(s3.toUpperCase());
    39. System.out.println(","+ordnung(s1,s2));
    40. }
    41. }
    42. }
    Alles anzeigen


    PS: wasawasa hat Recht. Je mehr Informationen du angibst, desto hoeher ist die Wahrscheinlichkeit, dass dir geholfen wird.
    Du schiesst dir selbst n Eigentor, wenn du das nur so spaerlich beschreibst.
    User helfen Usern: die FSB-Tutoren! (zum Chat) (zur Gruppe)

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Skyte ()