Java 为什么我的扫描仪每三行要求输入一次?

Java 为什么我的扫描仪每三行要求输入一次?,java,logic,java.util.scanner,scanning,Java,Logic,Java.util.scanner,Scanning,有人知道为什么我的扫描仪要求每三行输入一次,而不是每一行输入一次吗?如果你运行它,你会看到它先问问题,然后不问两行,然后再问问题。我如何让它每行都问一个问题,更不用说把它存储在一个链表中了 import java.util.Scanner; public class StackCalc { public static StackLL stackll = new StackLL(); public static void create() { String

有人知道为什么我的扫描仪要求每三行输入一次,而不是每一行输入一次吗?如果你运行它,你会看到它先问问题,然后不问两行,然后再问问题。我如何让它每行都问一个问题,更不用说把它存储在一个链表中了

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();
    }
}

任何输入都会很棒。

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

hold=scanner.next()

scanner.next().equals(“Q”)

scanner.next().equals(“q”)

相反,只需通过更改以下内容来调用它一次:

scanner.next().equals(“Q”)
to
hold.equals(“Q”)


scanner.next().equals(q”)
hold.equals(“q”)

在程序中可能重复@AlexisKing我没有看到任何nextLine()。当我使用.nextLine();@kirbyquerby它使用
next
,这将遇到相同的行为。这不是你的问题,但我打赌这是
(scanner.next().equals(“Q”)| scanner.next().equals(“Q”)
不是您想要做的。如果第一个字符不是Q,则该代码将消耗2个令牌。