Unübersichtliches Anfänger-"Programm" überarbeiten/vereinfachen?

wiesner95

Mitglied
Morgen!

Ich hätte da eine große Bitte bzw Frage.
Ich habe für die Schule ein "Programm" geschrieben welches Zahlen generiert und die generierte Zahl muss erraten werden. Ich habe ein paar zusätzliche Dinge gemacht die nicht gefragt waren.
z.B. > Sprachauswahl
> Tutorial
> eine Abfrage ob man nochmals "spielen" möchte

Da ich erst seit wenigen Monaten mit Programmieren zu tun habe ist es total unübersichtlich geworden:
(Achtung! Für erfahrene Programmierer sicher ein schmerzender Anblick!)
Java:
import java.util.*;
public class Zufallszahl{
       public static void main(String[] args){
          System.out.println("RANDOM NUMBER GENERATOR ");
          System.out.println();
          System.out.print("Do you want see the tutorial (yes/no)?: ");
          Scanner tut=new Scanner(System.in);
          String tutyn = tut.next();
          System.out.println();
            if(tutyn.equals("yes")){
             System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
             System.out.println("                                TUTORIAL:");
             System.out.println("    The following programm is going to generate a number between 1 and 100.");
             System.out.println("               You have three tries too guess the generated number!");
             System.out.println("                                Have fun!");
             System.out.println();
             System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

                   System.out.print("Please select the language (english/german)? ");
                   Scanner Sprache=new Scanner(System.in);
                   String mSprache = Sprache.next();
                   System.out.println();
                   System.out.println();

                     if(mSprache.equals("english")){
                     Scanner nochmals=new Scanner(System.in);

                     do{

                     int max=100;
                     int zufallszahl=(int)(Math.random()*max+1);
                     for(int a=2; a>-1; a--){
                             System.out.print("Please choose a number between 1 and 100: ");

                             Scanner zahl= new Scanner(System.in);
                             int x=zahl.nextInt();

                             if(x<zufallszahl){
                             System.out.println();
                             System.out.println("The number " + x + " is less than the generated number!");
                                  if(a==0){
                                    System.out.println("You haven't any tries!");
                                    System.out.println();
                                    System.out.println();
                                  }
                                  else{
                                    System.out.print("You have still " +  a + " tries!");
                                    System.out.println();
                                    System.out.println();
                                  }
                             }
                             else{
                                  if(x>zufallszahl){
                                      System.out.println();
                                      System.out.println("The number " + x + " is bigger than the generated number!");
                                       if(a==0){
                                             System.out.println("You haven't any tries!");
                                             System.out.println();
                                             System.out.println();
                                       }
                                       else{
                                         System.out.print("You have still " +  a + " tries!");
                                         System.out.println();
                                         System.out.println();
                                       }
                                  }
                                  else{
                                     System.out.println();
                                     System.out.println("The generated number agrees with the input number!");
                                         if(a==0){
                                               System.out.println("You haven't any tries!");
                                               System.out.println();
                                               System.out.println();
                                         }
                                         else{
                                           System.out.print("You have still " +  a + " tries!");
                                           System.out.println();
                                           System.out.println();
                                         }
                                  }
                             }
                     }
                         System.out.println();
                         System.out.println("The generated number is " + zufallszahl + "!");
                         System.out.println();
                         System.out.println();
                         System.out.print("Do you want play again (yes/no)?: ");
                    }while( ( nochmals.next()).equals("yes"));
                    System.out.println();
                    System.out.println();
                    System.out.println("                  Thanks, for using Wiesner-Systems!");
                   }
                   else{

                     if(mSprache.equals("german")){
                       Scanner nochmals=new Scanner(System.in);
                       do{

                          int max=100;
                          int zufallszahl=(int)(Math.random()*max+1);
                          for(int a=2; a>-1; a--){
                                  System.out.print("Bitte geben Sie eine Zahl von 1 bis 100 ein: ");

                                  Scanner zahl= new Scanner(System.in);
                                  int x=zahl.nextInt();

                                  if(x<zufallszahl){
                                                    System.out.println();
                                                    System.out.println("Die Zahl " + x + " ist kleiner als die gesuchte Zahl!");
                                           if(a==0){
                                                    System.out.println("Sie haben keine Versuche mehr frei!");
                                                    System.out.println();
                                                    System.out.println();
                                           }
                                           else{
                                                    System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                                    System.out.println();
                                                    System.out.println();
                                           }
                                  }
                                  else{
                                        if(x>zufallszahl){
                                                          System.out.println();
                                                          System.out.println("Die Zahl " + x + " ist größer als die gesuchte Zahl!");
                                                          if(a==0){
                                                                   System.out.println("Sie haben keine Versuche mehr frei!");
                                                                   System.out.println();
                                                                   System.out.println();
                                                          }
                                                          else{
                                                                System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                                                System.out.println();
                                                                System.out.println();
                                                          }
                                        }
                                        else{
                                              System.out.println();
                                              System.out.println("Die gesuchte Zahl stimmt mit der eingegebnen überein!");
                                              if(a==0){
                                               System.out.println("Sie haben keine Versuche mehr frei!");
                                               System.out.println();
                                               System.out.println();
                                              }
                                              else{
                                                   System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                                   System.out.println();
                                                   System.out.println();
                                              }
                                        }
                                  }
                          }
                                  System.out.println();
                                  System.out.println("Die gesuchte Zahl war " + zufallszahl + "!");
                                   System.out.println();
                                   System.out.println();
                                   System.out.print("Wollen sie nochmals (ja/nein)?: ");
                       }while( ( nochmals.next()).equals("ja"));
                               System.out.println();
                               System.out.println();
                               System.out.println("                  Danke, dass sie Wiesner-Systems benutzt haben!");
                     }
                     else{
                          System.out.println("The input is incorrect.");
                          System.out.println("Please quit the programm and start it again!");
                     }
                   }


            }
            else{
              if(tutyn.equals("no")){
                   System.out.print("Please select the language (english/german)? ");
                   Scanner Sprache=new Scanner(System.in);
                   String mSprache = Sprache.next();
                   System.out.println();
                   System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                     if(mSprache.equals("english")){
                     Scanner nochmals=new Scanner(System.in);

                     do{

                     int max=100;
                     int zufallszahl=(int)(Math.random()*max+1);
                     for(int a=2; a>-1; a--){
                             System.out.print("Please choose a number between 1 and 100: ");

                             Scanner zahl= new Scanner(System.in);
                             int x=zahl.nextInt();

                             if(x<zufallszahl){
                             System.out.println();
                             System.out.println("The number " + x + " is less than the generated number!");
                                  if(a==0){
                                    System.out.println("You haven't any tries!");
                                    System.out.println();
                                    System.out.println();
                                  }
                                  else{
                                    System.out.print("You have still " +  a + " tries!");
                                    System.out.println();
                                    System.out.println();
                                  }
                             }
                             else{
                                  if(x>zufallszahl){
                                      System.out.println();
                                      System.out.println("The number " + x + " is bigger than the generated number!");
                                       if(a==0){
                                             System.out.println("You haven't any tries!");
                                             System.out.println();
                                             System.out.println();
                                       }
                                       else{
                                         System.out.print("You have still " +  a + " tries!");
                                         System.out.println();
                                         System.out.println();
                                       }
                                  }
                                  else{
                                     System.out.println();
                                     System.out.println("The generated number agrees with the input number!");
                                         if(a==0){
                                               System.out.println("You haven't any tries!");
                                               System.out.println();
                                               System.out.println();
                                         }
                                         else{
                                           System.out.print("You have still " +  a + " tries!");
                                           System.out.println();
                                           System.out.println();
                                         }
                                  }
                             }
                     }
                         System.out.println();
                         System.out.println("The generated number is " + zufallszahl + "!");
                         System.out.println();
                         System.out.println();
                         System.out.print("Do you want play again (yes/no)?: ");
                    }while( ( nochmals.next()).equals("yes"));
                    System.out.println();
                    System.out.println();
                    System.out.println("                  Thanks, for using Wiesner-Systems!");
                   }
                   else{

                     if(mSprache.equals("german")){
                       Scanner nochmals=new Scanner(System.in);
                       do{

                          int max=100;
                          int zufallszahl=(int)(Math.random()*max+1);
                          for(int a=2; a>-1; a--){
                                  System.out.print("Bitte geben Sie eine Zahl von 1 bis 100 ein: ");

                                  Scanner zahl= new Scanner(System.in);
                                  int x=zahl.nextInt();

                                  if(x<zufallszahl){
                                                    System.out.println();
                                                    System.out.println("Die Zahl " + x + " ist kleiner als die gesuchte Zahl!");
                                           if(a==0){
                                                    System.out.println("Sie haben keine Versuche mehr frei!");
                                                    System.out.println();
                                                    System.out.println();
                                           }
                                           else{
                                                    System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                                    System.out.println();
                                                    System.out.println();
                                           }
                                  }
                                  else{
                                        if(x>zufallszahl){
                                                          System.out.println();
                                                          System.out.println("Die Zahl " + x + " ist größer als die gesuchte Zahl!");
                                                          if(a==0){
                                                                   System.out.println("Sie haben keine Versuche mehr frei!");
                                                                   System.out.println();
                                                                   System.out.println();
                                                          }
                                                          else{
                                                                System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                                                System.out.println();
                                                                System.out.println();
                                                          }
                                        }
                                        else{
                                              System.out.println();
                                              System.out.println("Die gesuchte Zahl stimmt mit der eingegebnen überein!");
                                              if(a==0){
                                               System.out.println("Sie haben keine Versuche mehr frei!");
                                               System.out.println();
                                               System.out.println();
                                              }
                                              else{
                                                   System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                                   System.out.println();
                                                   System.out.println();
                                              }
                                        }
                                  }
                          }
                                  System.out.println();
                                  System.out.println("Die gesuchte Zahl war " + zufallszahl + "!");
                                   System.out.println();
                                   System.out.println();
                                   System.out.print("Wollen sie nochmals (ja/nein)?: ");
                       }while( ( nochmals.next()).equals("ja"));
                               System.out.println();
                               System.out.println();
                               System.out.println("                  Danke, dass sie Wiesner-Systems benutzt haben!");
                     }
                     else{
                          System.out.println("The input is incorrect.");
                          System.out.println("Please quit the programm and start it again!");
                     }
                   }
              }
              else{
                  System.out.println("The input is incorrect.");
                          System.out.println("Please quit the programm and start it again!");
              }
            }


       }
}

Das wär mein "kleines Programm".
Meine bitte wäre nun, ob mir jemand helfen könnte das ganze übersichtlicher und einfacher zu gestalten aber so das es ein totaler Anfänger auch noch versteht. Alles was ich bis jetzt so in Programmieren gelernt habe, habe ich hier angewand.
Hat jemand eine Idee wie man das ganze einfacher machen kann aber das ich es trotzdem noch verstehe?

mfg und hoffnung auf baldige Antwort,
wiesner95
 
Ja, schmerzhaft, aber als ich vor ... (irgendwas zweistelliges) Jahren mal das gleiche Programm in QBASIC geschrieben habe, hatte es wohl noch ein paar hundert Zeilen mehr. Ca. 50 Zeilen könnte man wohl schon sparen, wenn man alle
Code:
System.out.println("You haven't any tries!");
System.out.println();
System.out.println();
ersetzen würde durch
Code:
System.out.println("You haven't any tries![b]\n\n[/b]"); // Zwei "[b]n[/b]ewlines"
Aber das ist ein eher unbedeutendes Detail, weil als erstes ohnehin die redundante Redundanz der verschiedenen Sprachen behoben werden sollte... Die Bedingung, dass "du es trotzdem noch verstehst" KÖNNTE(!) den Spielraum da einschränken, da damit die üblichen Verfahren für I18N (MessageBundles und Formatter) wegfallen. Ein (nicht "schöner", aber leicht verständlicher) Ansatz könnte sein, die Ausgaben in Methoden auszulagern
Code:
System.out.print("You have still " +  a + " tries!");
System.out.println();
System.out.println();
+
Code:
System.out.print("Sie haben noch " +  a + " Versuche offen!");
System.out.println();
System.out.println();
->
Code:
printRemainingTriesMessage(a);
...

private static void printRemainingTriesMessage(int a)
{
    if (language.equals("german")) System.out.print("Sie haben noch " +  a + " Versuche offen!\n\n");
    else System.out.print("You have still " +  a + " tries!\n\n");
}

Wie gesagt, nicht schön, aber mit den schon im Programm verwendeten Mitteln zu erreichen...
 
Code:
printRemainingTriesMessage(a);
...

private static void printRemainingTriesMessage(int a)
{
    if (language.equals("german")) System.out.print("Sie haben noch " +  a + " Versuche offen!\n\n");
    else System.out.print("You have still " +  a + " tries!\n\n");
}

Wie gesagt, nicht schön, aber mit den schon im Programm verwendeten Mitteln zu erreichen...

Das habe ich nicht verstanden ... bitte um Erklärung bzw könntest du es in das Programm einbauen um mir zu zeigen wo ich das platzieren muss bzw was das überhaupt macht.

Mein neuer Code sieht so aus, er ist um rum 70 Zeilen kürzer durch das \n:
Java:
import java.util.*;
public class Zufallszahl{
       public static void main(String[] args){
          System.out.println("RANDOM NUMBER GENERATOR ");
          System.out.println();
          System.out.print("Do you want see the tutorial (yes/no)?: ");
          Scanner tut=new Scanner(System.in);
          String tutyn = tut.next();
          System.out.println();
            if(tutyn.equals("yes")){
              System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
             System.out.println("                                TUTORIAL:");
             System.out.println("    The following programm is going to generate a number between 1 and 100.");
             System.out.println("               You have three tries too guess the generated number!");
             System.out.println("                                Have fun!\n");
             System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

                   System.out.print("Please select the language (english/german)? ");
                   Scanner Sprache=new Scanner(System.in);
                   String mSprache = Sprache.next();
                   System.out.println();
                   System.out.println();

                     if(mSprache.equals("english")){
                     Scanner nochmals=new Scanner(System.in);

                     do{

                     int max=100;
                     int zufallszahl=(int)(Math.random()*max+1);
                     for(int a=2; a>-1; a--){
                             System.out.print("Please choose a number between 1 and 100: ");
                             Scanner zahl= new Scanner(System.in);
                             int x=zahl.nextInt();

                             if(x<zufallszahl){
                             System.out.println();
                             System.out.println("The number " + x + " is less than the generated number!");
                                  if(a==0){
                                    System.out.println("You haven't any tries!\n\n");
                                  }
                                  else{
                                    System.out.print("You have still " +  a + " tries!\n\n");
                                  }
                             }
                             else{
                                  if(x>zufallszahl){
                                      System.out.println();
                                      System.out.println("The number " + x + " is bigger than the generated number!");
                                       if(a==0){
                                             System.out.println("You haven't any tries!\n\n");
                                       }
                                       else{
                                         System.out.print("You have still " +  a + " tries!\n\n");
                                       }
                                  }
                                  else{
                                     System.out.println();
                                     System.out.println("The generated number agrees with the input number!");
                                         if(a==0){
                                               System.out.println("You haven't any tries!\n\n");
                                         }
                                         else{
                                           System.out.print("You have still " +  a + " tries!\n\n");
                                         }
                                  }
                             }
                     }
                         System.out.println();
                         System.out.println("The generated number is " + zufallszahl + "!\n\n");
                         System.out.print("Do you want play again (yes/no)?: ");
                    }while( ( nochmals.next()).equals("yes"));
                    System.out.println();
                    System.out.println();
                    System.out.println("                  Thanks, for using Wiesner-Systems!");
                   }
                   else{

                     if(mSprache.equals("german")){
                       Scanner nochmals=new Scanner(System.in);
                       do{

                          int max=100;
                          int zufallszahl=(int)(Math.random()*max+1);
                          for(int a=2; a>-1; a--){
                                  System.out.print("Bitte geben Sie eine Zahl von 1 bis 100 ein: ");

                                  Scanner zahl= new Scanner(System.in);
                                  int x=zahl.nextInt();

                                  if(x<zufallszahl){
                                                    System.out.println();
                                                    System.out.println("Die Zahl " + x + " ist kleiner als die gesuchte Zahl!");
                                           if(a==0){
                                                    System.out.println("Sie haben keine Versuche mehr frei!\n\n");
                                           }
                                           else{
                                                    System.out.print("Sie haben noch " +  a + " Versuche offen!\n\n");
                                           }
                                  }
                                  else{
                                        if(x>zufallszahl){
                                                          System.out.println();
                                                          System.out.println("Die Zahl " + x + " ist größer als die gesuchte Zahl!");
                                                          if(a==0){
                                                                   System.out.println("Sie haben keine Versuche mehr frei!\n\n");
                                                          }
                                                          else{
                                                                System.out.print("Sie haben noch " +  a + " Versuche offen!\n\n");
                                                          }
                                        }
                                        else{
                                              System.out.println();
                                              System.out.println("Die gesuchte Zahl stimmt mit der eingegebnen überein!");
                                              if(a==0){
                                               System.out.println("Sie haben keine Versuche mehr frei!\n\n");;
                                              }
                                              else{
                                                   System.out.print("Sie haben noch " +  a + " Versuche offen!\n\n");
                                              }
                                        }
                                  }
                          }
                                  System.out.println();
                                  System.out.println("Die gesuchte Zahl war " + zufallszahl + "!\n\n");
                                   System.out.print("Wollen sie nochmals (ja/nein)?: ");
                       }while( ( nochmals.next()).equals("ja"));
                               System.out.println();
                               System.out.println();
                               System.out.println("                  Danke, dass sie Wiesner-Systems benutzt haben!");
                     }
                     else{
                          System.out.println("The input is incorrect.");
                          System.out.println("Please quit the programm and start it again!");
                     }
                   }


            }
            else{
              if(tutyn.equals("no")){
                   System.out.print("Please select the language (english/german)? ");
                   Scanner Sprache=new Scanner(System.in);
                   String mSprache = Sprache.next();
                   System.out.println();
                   System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                     if(mSprache.equals("english")){
                     Scanner nochmals=new Scanner(System.in);

                     do{

                     int max=100;
                     int zufallszahl=(int)(Math.random()*max+1);
                     for(int a=2; a>-1; a--){
                             System.out.print("Please choose a number between 1 and 100: ");

                             Scanner zahl= new Scanner(System.in);
                             int x=zahl.nextInt();

                             if(x<zufallszahl){
                             System.out.println();
                             System.out.println("The number " + x + " is less than the generated number!");
                                  if(a==0){
                                    System.out.println("You haven't any tries!\n\n");
                                  }
                                  else{
                                    System.out.print("You have still " +  a + " tries!\n\n");
                                  }
                             }
                             else{
                                  if(x>zufallszahl){
                                      System.out.println();
                                      System.out.println("The number " + x + " is bigger than the generated number!");
                                       if(a==0){
                                             System.out.println("You haven't any tries!\n\n");
                                       }
                                       else{
                                         System.out.print("You have still " +  a + " tries!\n\n");
                                       }
                                  }
                                  else{
                                     System.out.println();
                                     System.out.println("The generated number agrees with the input number!");
                                         if(a==0){
                                               System.out.println("You haven't any tries!\n\n");
                                         }
                                         else{
                                           System.out.print("You have still " +  a + " tries!\n\n");
                                         }
                                  }
                             }
                     }
                         System.out.println();
                         System.out.println("The generated number is " + zufallszahl + "!\n\n");
                         System.out.print("Do you want play again (yes/no)?: ");
                    }while( ( nochmals.next()).equals("yes"));
                    System.out.println();
                    System.out.println();
                    System.out.println("                  Thanks, for using Wiesner-Systems!");
                   }
                   else{

                     if(mSprache.equals("german")){
                       Scanner nochmals=new Scanner(System.in);
                       do{

                          int max=100;
                          int zufallszahl=(int)(Math.random()*max+1);
                          for(int a=2; a>-1; a--){
                                  System.out.print("Bitte geben Sie eine Zahl von 1 bis 100 ein: ");

                                  Scanner zahl= new Scanner(System.in);
                                  int x=zahl.nextInt();

                                  if(x<zufallszahl){
                                                    System.out.println();
                                                    System.out.println("Die Zahl " + x + " ist kleiner als die gesuchte Zahl!");
                                           if(a==0){
                                                    System.out.println("Sie haben keine Versuche mehr frei!\n\n");
                                           }
                                           else{
                                                    System.out.print("Sie haben noch " +  a + " Versuche offen!\n\n");
                                           }
                                  }
                                  else{
                                        if(x>zufallszahl){
                                                          System.out.println();
                                                          System.out.println("Die Zahl " + x + " ist größer als die gesuchte Zahl!");
                                                          if(a==0){
                                                                   System.out.println("Sie haben keine Versuche mehr frei!\n\n");
                                                          }
                                                          else{
                                                                System.out.print("Sie haben noch " +  a + " Versuche offen!\n\n");
                                                          }
                                        }
                                        else{
                                              System.out.println();
                                              System.out.println("Die gesuchte Zahl stimmt mit der eingegebnen überein!");
                                              if(a==0){
                                               System.out.println("Sie haben keine Versuche mehr frei!\n\n");
                                              }
                                              else{
                                                   System.out.print("Sie haben noch " +  a + " Versuche offen!\n\n");
                                              }
                                        }
                                  }
                          }
                                  System.out.println();
                                  System.out.println("Die gesuchte Zahl war " + zufallszahl + "!\n\n");
                                   System.out.print("Wollen sie nochmals (ja/nein)?: ");
                       }while( ( nochmals.next()).equals("ja"));
                               System.out.println();
                               System.out.println();
                               System.out.println("                  Danke, dass sie Wiesner-Systems benutzt haben!");
                     }
                     else{
                          System.out.println("The input is incorrect.");
                          System.out.println("Please quit the programm and start it again!");
                     }
                   }
              }
              else{
                  System.out.println("The input is incorrect.");
                          System.out.println("Please quit the programm and start it again!");
              }
            }


       }
}

Was nun ?
 
Zuletzt bearbeitet:
Die Zeilenumbrüche kann man auch am Anfang einfügen, aus:

Java:
                         System.out.println();
                         System.out.println("The generated number is " + zufallszahl + "!\n\n")

wird dann:

Java:
                          System.out.println("\nThe generated number is " + zufallszahl + "!\n\n");
 
Ich hab einen Fehler in meinem Programm entdeckt!
Wenn man die Zahl erraten sollte geht das Programm einfach weiter als hätte man sie nicht erraten es schreibt zwar "Die Zahl ist richtig" und so aber es geht dann weiter und fragt nach dem nächsten Versuch ab.

Wie behebe ich das?
Den Code habe ich schon in meiner vorherigen Antwort geschrieben!

mfg
wiesner95
 
Du wiederholst deinen Code unnötig oft. Zum Beispiel müsstest du bei der if-Abfrage für das Tutorial nur das Tutorial
ausgeben wenn "yes" gewählt wurde. Du führst in deinem Beispiel aber den kompletten Code aus und wenn "no" gewählt
wurde nochmal.
Du könntest auch die ganzen mehrzeiligen Ausgabe in eigenen Methoden auslagern. Dann stören die nicht so wenn
man versuch den Programmablauf nachzuvollziehen. Eventuell findest du dann auch die Ursache für deinen Fehler
schneller.
 
hi wiesner,

möchte dir auch einen Tipp in Bezug auf vom Benutzer übergebenen Daten geben (in deinen Fall Strings ("ja/nein")).
Da du als Programmierer nicht genau weißt was der Benutzer letztendlich eingibt, sollte man mehrere Möglichkeiten ausschließen.
Z.b wäre es möglich, dass der Benutzer anstatt "ja" "Ja" oder " ja " eingeben würde. Dies macht natürlich einen erheblichen Unterschied, die equal-Methode würde in diesen Fall ein false returnen. Man kann natürlich nicht alles ausschließen jedoch zum Beispiel, die oben genannten Möglichkeiten. Man könnte .toLowerCase() auf das String Objekt aufrufen und ihn dan vergleichen sowie mit .replaceAll(" ", "") alle Leerzeichen entfernen.
 
Da bluten einem ja die Augen. Unter der Annahme, dass tatsächlich alles in der main-Methode stehen soll und nichts kompliziertes (Collections, ternärer Operator usw.) verwendet werden sollen, würde ich es so schreiben:

Java:
import java.util.*;

public class Zufallszahl {

    public static void main(String[] args) {
        System.out.println("RANDOM NUMBER GENERATOR ");
        System.out.print("\nDo you want see the tutorial (yes/no)?: ");
        Scanner scanner = new Scanner(System.in);
        String tutyn = scanner.next();
        System.out.println();
        if (tutyn.equals("yes")) {
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            System.out.println("                                TUTORIAL:");
            System.out.println("    The following programm is going to generate a number between 1 and 100.");
            System.out.println("               You have three tries too guess the generated number!");
            System.out.println("                                Have fun!\n");
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        }
        if (!tutyn.equals("yes") && !tutyn.equals("no")) {
            System.out.println("The input is incorrect.");
            System.out.println("Please quit the programm and start it again!");
        } else {
            System.out.print("Please select the language (english/german)? ");
            String mSprache = scanner.next();
            System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

            if (!mSprache.equals("english") && !mSprache.equals("german")) {
                System.out.println("The input is incorrect.");
                System.out.println("Please quit the programm and start it again!");
            } else {
                boolean english = mSprache.equals("english");
                do {
                    boolean gefunden = false;
                    int max = 100;
                    int zufallszahl = (int) (Math.random() * max + 1);
                    for (int a = 2; a > -1 && !gefunden; a--) {
                        if (english) {
                            System.out.print("Please choose a number between 1 and 100: ");
                        } else {
                            System.out.print("Bitte geben Sie eine Zahl von 1 bis 100 ein: ");
                        }
                        int x = scanner.nextInt();
                        if (x < zufallszahl) {
                            if (english) {
                                System.out.println("\nThe number " + x + " is less than the generated number!");
                            } else {
                                System.out.println("\nDie Zahl " + x + " ist kleiner als die gesuchte Zahl!");
                            }
                        } else if (x > zufallszahl) {
                            if (english) {
                                System.out.println("\nThe number " + x + " is bigger than the generated number!");
                            } else {
                                System.out.println("\nDie Zahl " + x + " ist größer als die gesuchte Zahl!");
                            }
                        } else {
                            gefunden = true;
                            if (english) {
                                System.out.println("The generated number agrees with the input number!");
                            } else {
                                System.out.println("Die gesuchte Zahl stimmt mit der eingegebnen überein!");
                            }
                        }
                        if (a == 0) {
                            if (english) {
                                System.out.println("You haven't any tries!\n\n");
                            } else {
                                System.out.println("Sie haben keine Versuche mehr frei!\n\n");
                            }
                        } else {
                            if (english) {
                                System.out.print("You have still " + a + " tries!\n\n");
                            } else {
                                System.out.print("Sie haben noch " + a + " Versuche offen!\n\n");
                            }
                        }
                    }
                    if (english) {
                        System.out.println("\nThe generated number is " + zufallszahl + "!\n\n");
                        System.out.print("Do you want play again (yes/no)?: ");
                    } else {
                        System.out.println("Die gesuchte Zahl war " + zufallszahl + "!\n\n");
                        System.out.print("Wollen sie nochmals (ja/nein)?: ");
                    }
                } while ((english && scanner.next().equals("yes"))
                        || (!english && scanner.next().equals("ja")));
                if (english) {
                    System.out.println("\n\n                  Thanks, for using Wiesner-Systems!");
                } else {
                    System.out.println("\n\n                  Danke, dass sie Wiesner-Systems benutzt haben!");
                }
            }
        }
    }
}

Scanner braucht man nur einmal. Das Tutorial habe ich ausgegliedert (was danach kam, war ja exakt dasselbe). Dann habe ich den englischen und deutschen Zweig zusammengefasst.
 
Die Version des Quelltextes von Landei ist gut strukturiert und bietet auch soweit ich es gesehen habe, auch keine Redundanz. Dies ist ein gutes Beispeil für wiesner95

Ich wollte jetzt auch nicht das Gegenteil behaupten. wiesner95 scheint ja auch sehr lernbereit zu sein.
 
Danke Landei für den Code!
Selber wäre ich nie auf so eine Idee gekommen, habe zwar alles von dem schon gelernt gehabt aber
nie wäre ich auf die Idee gekommen das alles hier einzubauen.

Danke euch allen!

mfg und großem Dank
wiesner95
 
Wieder mal eine Anmerkung zum Thema \n

Das ist NICHT portabel, also wenn schon sollte das Folgende

Java:
final String nl = System.getProperty("line.separator");

verwendet werden.
 

Neue Themen


Zurück
Oben