2013-02-04 117 views
-1

所以,我有一个循环,使用扫描仪输入3个单独的用户输入,2个整数和一个字符串。整数工作得很好,但字符串输入不起作用。它跳过字符串的iput,然后循环再次询问int。如何让java等待用户输入?

for(int e = 10; e > 5; e++) 
    { 
     System.out.println("Enter the Y coordinate of your guess. The upper left corner is 0, and the lower left is 7"); 
     int guessY = inputDevice.nextInt(); 
     System.out.println("Enter the X coordinate of your guess. The upper left corner is 0, and the upper right is 7"); 
     int guessX = inputDevice.nextInt(); 

     display[guessX][guessY] = map[guessX][guessY]; 
     for(int j = 0; j < 8; j++) 

       { 

      for(int t = 0; t < 8; t++) 

      { 

       System.out.print(display[j][t] + " "); 

      } 

      System.out.println(); 

     } 


     System.out.println("Enter go when you are ready to make another move."); 
     System.out.println("Enter quit to give up"); 
     String cont = inputDevice.nextLine(); 

     if(cont.equalsIgnoreCase("quit")) 
     { 
      System.out.println("Weenie."); 
      System.exit(0); 
     } else if(cont.equalsIgnoreCase("go")) { 
      for(int i = 0; i < 100; i++) 
       System.out.println("\b"); 
     } 

     if(map[guessX][guessY] == '0') 
     { 
      if(map[guessX - 1][guessY - 1] == '0') 
       display[guessX - 1][guessY - 1] = map[guessX - 1][guessY - 1]; 
      if(map[guessX - 1][guessY + 0] == '0') 
       display[guessX - 1][guessY + 0] = map[guessX - 1][guessY + 0]; 
      if(map[guessX - 1][guessY + 1] == '0') 
       display[guessX - 1][guessY + 1] = map[guessX - 1][guessY + 1]; 
      if(map[guessX + 0][guessY - 1] == '0') 
       display[guessX + 0][guessY - 1] = map[guessX + 0][guessY - 1]; 
      if(map[guessX + 0][guessY + 1] == '0') 
       display[guessX + 0][guessY + 1] = map[guessX + 0][guessY + 1]; 
      if(map[guessX + 1][guessY - 1] == '0') 
       display[guessX + 1][guessY - 1] = map[guessX + 1][guessY - 1]; 
      if(map[guessX + 1][guessY + 0] == '0') 
       display[guessX + 1][guessY + 0] = map[guessX + 1][guessY + 0]; 
      if(map[guessX + 1][guessY + 1] == '0') 
       display[guessX + 1][guessY + 1] = map[guessX + 1][guessY + 1]; 
     } 
     if(display[guessX][guessY] == 'M') 
     { 
      System.out.println("You hit a mine"); 
      System.out.println("Game over."); 
      System.exit(0); 
     } 
    } 
+6

http://beginwithjava.blogspot.com/2008/07/getting-keyboard-input-for-console-apps.html –

回答

2

从Java 7文档http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

公共字符串nextLine()
此扫描器执行当前行,并返回跳过的输入信息。此方法返回当前行的其余部分,排除末尾的任何行分隔符。该位置设置为下一行的开头。

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

你可能想使用:

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