【问题标题】:Why does my scanner ask for input every three lines?为什么我的扫描仪要求每三行输入一次?
【发布时间】:2015-01-27 00:38:53
【问题描述】:

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

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

任何输入都会很棒。

【问题讨论】:

  • @AlexisKing 我在程序中没有看到任何 nextLine()
  • 当我使用 .nextLine(); 时通常会发生同样的事情;
  • @kirbyquerby 它使用next,会遇到同样的行为。
  • 这不是你的问题,但我打赌这(scanner.next().equals("Q") || scanner.next().equals("q")) 不是你想要做的。如果第一个字符不是 Q,那么该代码将消耗 2 个令牌。

标签: java logic java.util.scanner scanning


【解决方案1】:

是因为你使用了Scanner.next()方法3次:

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")

【讨论】:

    猜你喜欢
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多