2016-04-11 3 views
-1

Ich weiß nicht, wie man dieses einfache Programm, das ich codiert und ich brauche Hilfe.Ich brauche Hilfe Schleife dieses Programm, wenn der Benutzer etwas ungültiges eingibt

Dies ist in meiner ersten Klasse:

public class project{ 
    public static void main(String[] args){ 
     dank dankObject = new dank(); 

     dankObject.design(); 
     dankObject.catchError(); 

    } 
} 

Dies ist meine zweite Klasse:

import java.util.Scanner; 

public class dank{ 
    public void design(){ 
     System.out.println("---------------------------------"); 
     System.out.println("| Main Checmicals in Substances |"); 
     System.out.println("---------------------------------"); 
     System.out.println("| LSD | SHROOMS | WEED |"); 
     System.out.println("------------------------"); 
     System.out.print("\nWhich substance would you like to learn about?\nInput: "); 
    } 

    public void catchError(){ 
     Scanner input = new Scanner(System.in); 
     String choice = input.nextLine(); 
     try{ 
      if(choice.equalsIgnoreCase("LSD")) 
      { 
       System.out.println("\nMain Chemical: Lysergic Acid Diethylamide"); 
       System.out.println("Fatal: NO"); 
      } 
      else if(choice.equalsIgnoreCase("SHROOMS")) 
      { 
       System.out.println("\nMain Chemical: Psilocybin"); 
       System.out.println("Fatal: NO"); 
      } 
      else if(choice.equalsIgnoreCase("WEED")) 
      { 
       System.out.println("\nMain Chemical: THC"); 
       System.out.println("Fatal: HELL NO"); 
      } 
      else 
      { 
       System.out.println("\nInvalid Input!"); 
      } 
     } 

     catch(Exception e) 
     { 
      System.out.println("\nInvalid Input!"); 
     } 

    } 
} 

Grundsätzlich mag ich nur das Programm neu zu starten, wenn der Benutzer eine ungültige Eingabe eintritt. Tue ich das mit While-Schleife? Ich fange gerade an, Java zu lernen.

+0

Dies wird nicht kompiliert. –

+0

@MadPhysicist warum? Sieht gut für mich aus. – f1sh

+0

Nichts im try-catch löst eine Ausnahme aus. –

Antwort

0

bewegen sich die beiden Linien:

Scanner input = new Scanner(System.in); 
String choice = input.nextLine(); 

in das Ende der design() -Methode. Rufen Sie dann die Methode catchError(choice) auf und übergeben Sie die Auswahl. Setzen Sie die Linie design() am Ende Ihren Fangkörper. Schließlich, nehmen Sie die catchError() Methode aus Ihrem Haupt().

Dies ist nur ein Vorschlag, Sie können alles tun, was so aussieht, wenn Sie bevorzugen. Ich benutze auch keinen booleschen Code. Wenn Sie das stattdessen tun möchten, sollten Sie wahrscheinlich einige andere Vorschläge machen.

import java.util.Scanner; 

public class dank{ 
    public void design(){ 
     System.out.println("---------------------------------"); 
     System.out.println("| Main Checmicals in Substances |"); 
     System.out.println("---------------------------------"); 
     System.out.println("| LSD | SHROOMS | WEED |"); 
     System.out.println("------------------------"); 
     System.out.print("\nWhich substance would you like to learn about?\nInput: "); 
     Scanner input = new Scanner(System.in); 
     String choice = input.nextLine(); 
     catchError(choice); 
    } 

    public void catchError(String choice){ 
     try{ 
      if(choice.equalsIgnoreCase("LSD")) 
      { 
       System.out.println("\nMain Chemical: Lysergic Acid Diethylamide"); 
       System.out.println("Fatal: NO"); 
      } 
      else if(choice.equalsIgnoreCase("SHROOMS")) 
      { 
       System.out.println("\nMain Chemical: Psilocybin"); 
       System.out.println("Fatal: NO"); 
      } 
      else if(choice.equalsIgnoreCase("WEED")) 
      { 
       System.out.println("\nMain Chemical: THC"); 
       System.out.println("Fatal: HELL NO"); 
      } 
      else 
      { 
       System.out.println("\nInvalid Input!"); 
       design(); 
      } 
     } 

     catch(Exception e) 
     { 
      System.out.println("\nInvalid Input!"); 
      design(); 
     } 

    } 
} 
+0

Irgendwelche Empfehlungen, wie ich meinen Code verkürzen oder besser machen kann? – AwkwardMonkey

+0

Der Code mag nicht so aussehen, aber es ist schon ziemlich kurz. Nur eine Menge Text, den Sie auf dem Bildschirm ausgeben (was es länger erscheinen lässt). Der Code selbst ist jedoch solide. – Eames

+0

Ok danke für deine Hilfe Mann. – AwkwardMonkey

0

Ich nehme an, Sie möchten Schleife, wenn die Eingabe ungültig ist.

In diesem Fall ändern Sie Ihre catchError Methode boolean statt void und kehren zurück, ob die Eingabe gültig war, als solche:

public boolean catchError(){ 
    Scanner input = new Scanner(System.in); 
    String choice = input.nextLine(); 
    try{ 
     if(choice.equalsIgnoreCase("LSD")) 
     { 
      System.out.println("\nMain Chemical: Lysergic Acid Diethylamide"); 
      System.out.println("Fatal: NO"); 
     } 
     else if(choice.equalsIgnoreCase("SHROOMS")) 
     { 
      System.out.println("\nMain Chemical: Psilocybin"); 
      System.out.println("Fatal: NO"); 
     } 
     else if(choice.equalsIgnoreCase("WEED")) 
     { 
      System.out.println("\nMain Chemical: THC"); 
      System.out.println("Fatal: HELL NO"); 
     } 
     else 
     { 
      System.out.println("\nInvalid Input!"); 
      return false; 
     } 
    } 

    catch(Exception e) 
    { 
     System.out.println("\nInvalid Input!"); 
     return false; 
    } 
    return true; 
} 

Und dann Schleife während der Rückgabewert false:

boolean flag = true; 
while (flag) { 
    dankObject.design(); 
    flag = dankObject.catchError(); 
} 
Verwandte Themen