2017-11-13 2 views
0

Also ich bin ziemlich neu in der Programmierung mit Java (gestern gestartet). Was ich versuche zu tun ist, eine Eingabe einer Ganzzahl zu machen, wenn die int c es ist höher als 1 oder niedriger als 0 (wenn es nicht 1 oder 0 ist), ich will es wieder zu starten. Wenn int c gleich 1 oder 0 ist, möchte ich den Algorithmus fortsetzen. Ich habe versucht, eine Art von Schleifen nach if (c> 1 || c < 0) einfügen, aber es scheint nicht zu funktionieren und sprüht nur meine Konsole mit dem Ergebnis. Gibt es eine einfache Möglichkeit, den Algorithmus von vorne beginnen zu lassen? Ich versuche bereits, dies für mehr als 2 Stunden zu beheben, aber ich verwirre mich immer wieder.Einen Algorithmus von neuem starten lassen?

while (sc.hasNextInt()) { 
    int aInt = sc.nextInt(); 
    //logic here 
} 

Dokumentation für hasNextInt() Methode:

// more code up here but it is unimportant 
int c = sc.nextInt(); 

    if(c > 1 || c < 0) { 
     result = result + wrong; 
     System.out.println(result); 
    } else if (c == 1) { 
     result = result + notImplemented; 
     System.out.println(result); 
    } else if (c == 0) { //more code follows here but is unimportant 
+0

„wieder“ - wiederverwenden es ... es in einem Verfahren setzen und nennt es wieder – lolo

+0

@lolo ich wieder die ganze Methode nicht nennen will, da mehr ist Sachen, die oben drauf gehen. Danke aber, hätte das erwähnen sollen. –

Antwort

2

Sie wollen also wieder für die Eingabe fragen, nehme ich an.

könnte ein einfacher Weg sein:

int c = sc.nextInt(); 

while (c > 1 || c < 0) { 
    c = sc.nextInt(); 
} 
//code continues 
+0

Aber dann hat er nicht die Nachrichten drucken mehr –

+0

Hey, ja, ich mit den Nachrichten einige Probleme hatte, konnte aber fixieren Sie es mit: 'if (c> 1 || c <0) { \t \t \t während (c > 1 || c <0) { \t \t \t \t System.out.println ("Nein 0 oder 1, versuchen Sie es erneut:"); \t \t \t \t c = sc.nextInt(); \t \t \t} \t \t} ' funktioniert jetzt, danke viel :) –

+0

Gut, dass Sie es hilfreich. Bitte markieren Sie dies als die richtige Antwort –

0

Sie benötigen eine Schleife zu verwenden, so dass Sie

while(true){ 
    int c = sc.nextInt(); 

    if(c > 1 || c < 0) { 
     result = result + wrong; 
     System.out.println(result); 
     break; 
    } else if (c == 1) { 
     result = result + notImplemented; 
     System.out.println(result); 
    } else if (c == 0) { //more code follows here but is unimportant 
    ... 
} 

haben Da Sie sagen, Sie sind neu, ich werde eine kleine Erklärung tun: A While-Schleife wiederholt, was in seinem Codeblock ist (dh innerhalb der { }), solange eine bestimmte Bedingung wahr ist. Im Falle meiner Antwort habe ich while(true) getan, was bedeutet, dass es so lange wiederholt wird, bis etwas aufhört. In diesem Fall habe ich eine break verwendet, die die Schleife zum Ende/Stopp zwingt.

+0

Vielen Dank für Ihre Erklärung. Ich habe versucht, eine while (true) {} Schleife zu implementieren, aber es funktioniert nicht so, wie ich es will. Ich habe es geschafft, das Problem zu lösen. Zuerst überprüfe ich, ob c nicht gleich 1 oder 0 ist und wenn nicht, dann wiederhole ich, solange c nicht gleich 1 oder 0 ist, und setze c auf die nächste Ganzzahl als Eingabe zurück. Vielen Dank! –

0

Sie while in diesem Fall benutzen und verwenden können break verlassen:

while (scanner.hasNext()) { 
    int c = sc.nextInt(); 

    if(c > 1 || c < 0) { 
     result = result + wrong; 
     System.out.println(result); 
    } else if (c == 1) { 
     result = result + notImplemented; 
     System.out.println(result); 
     break; 
    } else if (c == 0) { 
     ... 
     break; 
    } 
} 

scanner.close(); 
-1

Sie Ihren Code setzen in einer Funktion kann (was ich hoffe, ist bereits der Fall ist) und dann, wenn Sie die nicht haben erwartetes Ergebnis und möchte es erneut aufrufen, indem Sie Ihre Funktion in sich selbst aufrufen.
Es heißt Rekursion. Sie können mehr erfahren here. Zum Beispiel:

// more code up here but it is unimportant 
public void myFunction(){ 
    int c = sc.nextInt(); 
    if(c > 1 || c < 0) { 
     result = result + wrong; 
     System.out.println(result); 
    } else if (c == 1) { 
     result = result + notImplemented; 
     System.out.println(result); 
    } else if (c == 0) { //more code follows here but is unimportant 
    } 
    //You want to call your function again 
    myFunction(); 
} 
+0

Warum wurde dies abgelehnt? –

+0

Ich möchte die ganze Methode nicht nochmal aufrufen, da oben noch mehr Sachen laufen. Danke, hätte das erwähnen sollen. Ich weiß nicht, warum das abgelehnt wurde. –

Verwandte Themen