2014-01-16 49 views
-1

对不起,应该已经增加了更多的的Java While循环不能继续下一条语句

import java.util.Scanner; 

public class rpg { 
    public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
    String input; 
    boolean live = true; 

    if (live == true){ 
     System.out.println("DETECTIVE RPG"); 

     while (true) {       // << ENTER CHECK 
     System.out.print("\n Press Enter..."); 
     input = keyboard.next(); 
     if (input.equals(null)) 
      break; 
     }          // ENTER CHECK >> 

     System.out.print("Past check."); 

键盘是我命名的扫描仪。

这将“Press Enter”输出到控制台,并确保输入框为空。如果他们按Enter键,它应该打破While循环并转到下一个语句,对吧?当我按Enter时,它会显示另一个输入框,并且永远不会到达下一个打印语句。

+4

可疑的控制台输出... –

+0

“输入”和“键盘”的声明在哪里? –

+1

你确定'keyboard.next()'当你按下Enter键而不是比如说“^ M”或“”时返回null吗? – Ned

回答

2

当只有“Enter”被击中时,没有从Scanner返回的令牌。 next() method将阻塞,直到它可以读取令牌。

查找并返回此扫描程序的下一个完整标记。完整的令牌前后有与分隔符模式匹配的输入。即使先前调用hasNext()返回true,该方法也可能在等待输入进行扫描时阻塞。

切换到nextLine()

将此扫描仪推进到当前行并返回跳过的输入。此方法返回当前行的其余部分,排除末尾的任何行分隔符。该位置设置为下一行的开头。

由于此方法继续搜索输入以查找行分隔符,因此如果没有行分隔符存在,它可能会缓存搜索要跳过的行的所有输入。

它会返回整行输入。当该行为空时,它将返回一个空字符串,"",而不是null。请尝试

input = keyboard.nextLine(); 
if ("".equals(input)) 
    break; 
+0

非常感谢。我理解了解释并解决了我的问题。 – user3200498

+0

很好的答案。诚然,当问题更完整时帮助。 < grin/> – keshlam