2017-03-05 4 views
0
package task; 
import java.util.*; 

public class Task { 
    public static void main(String[] args) { 
     System.out.println("Enter \"t\" to terminate."); 
     for(;;){ 
      Scanner input = new Scanner(System.in); 
      int i; 
      double I = Double.POSITIVE_INFINITY; 
      for(i = 0; i <= I; i++){ 
       System.out.println("Integer " + i); 
       String a = input.next(); 
       if(a.equals("c")){ 
        break; 
       } 
      } 
     } 
    } 
} 

Ich habe Probleme, den Benutzer aufzufordern, "t" einzugeben, um die for-Schleife zu beenden. Ich möchte grundsätzlich, dass die for-Schleife jede einzelne positive ganze Zahl ausgibt, und wenn ich mich dazu entschließe zu beenden, gebe ich "t" ein.wie Benutzer aufgefordert werden, eine for-Schleife zu unterbrechen?

Wenn ich etwas Hilfe bekommen könnte, würde ich es begrüßen. Vielen Dank!

+2

"t" oder "c"? Weil du momentan nur nach 'c' testest. Außerdem haben Sie verschachtelte Schleifen. Wenn Sie die äußere Schleife unterbrechen möchten, müssen Sie sie beschriften. –

+0

Auch jedes Mal, wenn Ihre äußere Schleife iteriert, wird ein neuer Scanner erstellt. Tu es nicht. Erstellen Sie einen Scanner vor Schleifen und verwenden Sie ihn später in Schleifen. – Pshemo

+0

Auch einige Konvention Sachen: Verwenden Sie 'while (true)' anstelle von 'for (;;)' und da 'i <= I 'sowieso immer wahr ist, lassen Sie das' I' fallen und benutzen Sie einfach 'for (int i = 0;; i ++) ' –

Antwort

0

Sie könnten einfach ein Do verwenden, während anstelle eines für + brechen

Do während:

System.out.println("Enter \"t\" to terminate."); 
    Scanner input = new Scanner(System.in); 
    String pressed; 
    int i = 0; 
    while (true) { 
     i=0; 
     do { 
      System.out.println("Integer " + i); 
      pressed = input.next(); 
      i++; 
     } while (!pressed.equals("t")); 
    } 

Beachten Sie, dass Sie testen nicht, ob die Eingabe eine ganze Zahl ist.

Verwandte Themen