2016-02-06 43 views
-3

我试图要求用户继续键入数字,直到他们键入-1,一旦他们做的代码会说谢谢你以后再见!我现在有点卡住,因为我的循环是无限循环,我试图在不使用迭代的情况下解决它。这是我的。阅读数字,直到遇到条件

Scanner reader = new Scanner(System.in); 
System.out.println("Type numbers: "); 
int num = Integer.parseInt(reader.nextLine()); 
while (num < -1 || num > -1) { 
    System.out.println(num); 
     if (num == -1) { 
     System.out.println("Thank you and see you later!"); 
     break; 
    } 

} 
+0

因为你用你的循环是无限的最初输入的是相同的“num”值。它在循环中从不改变,并且没有机会改变,理解? –

+0

@SashaSalauyou是的,我知道这是问题,我只是永远不知道你可以把Integer.parseInt(reader.nextLine());本身,我认为你必须始终将它分配给一个变量。 – Nabz

回答

1

试试这个代码:

Scanner reader = new Scanner(System.in); 
int num = 0; 
System.out.println("Type numbers: "); 
while(true){ 
    //get user input 
    num = Integer.parseInt(reader.nextLine()); 
    if(num == -1){ 
     System.out.println("Thank you and see you later!"); 
     break; 
    } 
} 
+0

这个工程,但我想要“输入数字:”在输出中只显示一次,我有这个,但我不假设有类型数字一遍又一遍地显示 – Nabz

+0

只需在循环前面输入“类型数字:”即可。 – Makandal

2

您需要读取循环内的输入。你只做了一次(在进入循环之前),所以num的值永远不会改变。此外,您可以通过使用while (num != -1)

所以最终简化您的病情时,你会想是这样的:

Scanner reader = new Scanner(System.in); 
System.out.println("Type numbers: "); 
int num = 0; 
while (num != -1) { 
    num = Integer.parseInt(reader.nextLine()); 

     if (num == -1) { 
      System.out.println("Thank you and see you later!"); 

    }else{ 
     System.out.println(num); 
    } 

} 
+0

如果你在条件满足后立即断开,不需要在while()中检查它@ –

+0

@Chris你的代码不起作用,因为每次你输入一个数字,它都不会真的经过循环,而0总是在你输入的数字后面打印,因为num = 0并且永远不会改变 – Nabz

+0

@Nabz,你是对的。我做了一个编辑来清理它。 – Chris