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
 

Marco13

Top Contributor
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...
 

wiesner95

Mitglied
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:
G

gman

Gast
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");
 

wiesner95

Mitglied
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
 
G

gman

Gast
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.
 

socialcocer

Mitglied
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.
 

Landei

Top Contributor
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.
 
G

gman

Gast
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.
 

wiesner95

Mitglied
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
 

Andi_CH

Top Contributor
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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
H Threads Anfänger Java Basics - Anfänger-Themen 17
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
_Zabuza_ Erste Schritte Wie am effektivsten Java lernen als Anfänger? Java Basics - Anfänger-Themen 12
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
K Java Anfänger Java Basics - Anfänger-Themen 5
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
P Übungsaufgaben für Anfänger? Java Basics - Anfänger-Themen 2
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
CT9288 Mini Anfänger-Problem mit loops, statements und ; Java Basics - Anfänger-Themen 4
F Hilfe, bin Anfänger! Java Basics - Anfänger-Themen 4
R Erste Schritte Materialien für Java-Anfänger Java Basics - Anfänger-Themen 7
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
F Anfänger braucht Hilfe :) Java Basics - Anfänger-Themen 3
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
D Anfänger braucht Hilfe Java Basics - Anfänger-Themen 2
J Musikplayer zu schwer für Anfänger? Java Basics - Anfänger-Themen 3
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
V Erste Schritte Anfänger: Ausführen eines Java-Programms Java Basics - Anfänger-Themen 5
Textsurfer Methoden Anfänger * Java Basics - Anfänger-Themen 5
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
C verwirrter Anfänger Java Basics - Anfänger-Themen 6
L Verzinsungsprogramm (Java-Anfänger) Java Basics - Anfänger-Themen 3
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
M Erste Schritte Einfache Aufzugssteuerung programmieren - Anfänger Java Basics - Anfänger-Themen 2
D Anfänger-Problem mit dem HalloWelt-Programm Java Basics - Anfänger-Themen 5
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
J Anfänger hat Problem mit seinen Beet Java Basics - Anfänger-Themen 12
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
das_leon if als Auswahl (Anfänger) Java Basics - Anfänger-Themen 1
N Anfänger Problem Java Basics - Anfänger-Themen 4
GoodGuy [Anfänger] Kann mal wer drüber gucken? Java Basics - Anfänger-Themen 3
R Erste Schritte Anfänger Probleme bei AnimationDrawable Java Basics - Anfänger-Themen 0
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
C Taxiwarteschlange - Anfänger Java Basics - Anfänger-Themen 2
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
I Java, Application, Eclipse (Anfänger) Java Basics - Anfänger-Themen 1
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
S OOP Uhrenanzeige programmieren, Achtung Anfänger! Java Basics - Anfänger-Themen 9
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
I totaler Anfänger braucht Hilfe Java Basics - Anfänger-Themen 8
I Erste Schritte Bücher für Jungedliche[Anfänger] Java Basics - Anfänger-Themen 20
T Hallo anfänger braucht Hilfe :D Java Basics - Anfänger-Themen 7
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
J Hilfe für Anfänger Java Basics - Anfänger-Themen 8
E OOP Methode an andere Methode übergeben / OOP Anfänger Java Basics - Anfänger-Themen 4
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
C Anfänger braucht Hilfe bei Schularbeit Java Basics - Anfänger-Themen 3
J Erste Schritte Hilfe bei absolutem Anfänger-Projekt Java Basics - Anfänger-Themen 4
F Anfänger braucht Hilfe Java Basics - Anfänger-Themen 24
A Erste Schritte Übungen für Anfänger Java Basics - Anfänger-Themen 31
M Sieb des Eratosthenes für Anfänger Java Basics - Anfänger-Themen 10
M Tipps für einen Java-Anfänger Java Basics - Anfänger-Themen 5
S Anfänger Aufgaben Java Basics - Anfänger-Themen 6
G Anfänger-Errors und Fragen Java Basics - Anfänger-Themen 22
S Java für Anfänger: Probleme mit read() Java Basics - Anfänger-Themen 20
P [Anfänger] DiceGame Aufagbe Java Basics - Anfänger-Themen 23
C Input/Output Anfänger Array-Verständnis Frage Java Basics - Anfänger-Themen 7
W Erste Schritte OOP-Lektüre für Anfänger/Umsteiger von Clipper auf Java Java Basics - Anfänger-Themen 6
J Welches Java-Videotutorial für Anfänger empfehlenswert? Java Basics - Anfänger-Themen 7
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
P Java anfänger tutorial gesucht Java Basics - Anfänger-Themen 12
P Viereck mit Sterne - Anfänger bittet um Kritik und Anregung Java Basics - Anfänger-Themen 11
B Java für Anfänger Java Basics - Anfänger-Themen 7
T Bin Anfänger ... das Thema auch ? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben