2015-01-27 38 views
-1

有谁知道为什么我的扫描仪每三行要求输入一次,而不是每一行?如果你运行它,你会看到它首先提出这个问题,但是不会再出现两行,然后再次提出这个问题。我怎样才能让它在每一行都提问,更别说将它存储在链表中。为什么我的扫描仪每三行询问一次输入?

import java.util.Scanner; 

public class StackCalc { 

    public static StackLL stackll = new StackLL(); 

    public static void create() { 

     String hold = new String(); 
     Scanner scanner = new Scanner(System.in); 
     boolean running = true; 
     while (true) { 
     System.out.print("Enter number, math operation(+,-,*, or /), or Q to quit: "); 
     hold = scanner.next(); 


     if (scanner.next().equals("Q") || scanner.next().equals("q")) { 
      System.out.println(hold); 
      break; 
     } 
    } 

} 

public static boolean checkInt(String s, int it){ 
    Scanner scan = new Scanner(s.trim()); 
    if(!scan.hasNextInt(it)) 
     return false; 
    scan.nextInt(it); 
    return !scan.hasNext(); 
    } 

    public static void main(String args[]) { 
     create(); 
    } 
} 

任何输入都会很棒。

+0

可能重复http://stackoverflow.com/questions/13102045/skipping-nextline-after-use -nextint) – 2015-01-27 00:40:15

+0

@AlexisKing我在程序中看不到任何nextLine() – kirbyquerby 2015-01-27 00:41:25

+0

当我使用.nextLine()时,通常会发生同样的事情; – Matt 2015-01-27 00:41:51

回答

3

这是因为你正在使用的方法Scanner.next()三次:

hold = scanner.next()

scanner.next().equals("Q")

scanner.next().equals("q")

相反,只有通过改变称之为一次:

scanner.next().equals("Q")hold.equals("Q")

scanner.next().equals(q")hold.equals("Q")

[后使用nextInt跳跃nextLine()()(的
+0

谢谢!实际上这很有效。 – Matt 2015-01-27 01:15:07