如何终止接受由空格和换行符分隔的输入的 Scanner while 循环

How to terminate a Scanner while loop that takes input seperated by both whitespace and linebreaks

我试图在没有更多输入可供读取时终止此 Scanner while 循环。输入是每行两个由 space 分隔的数字。对于未公开的行数,下一行包含相同的内容,依此类推。输出应该是这两个数字的差值。

输入例如可以是

10 12

71293781758123 72784

1 12345677654321

输出的位置

2

71293781685339

12345677654320

只要找出区别,代码就可以工作,但我找不到结束 while 循环的方法。

如果我尝试将条件设置为 while (!sc.next().equals("")),它会读取每两个数字之间的白色 space 作为条件,并跳过第二个数字。

我无法通过执行 if (sc.next().equals("exit") 之类的操作来创建手动中断,因为输出必须只是差异而没有其他内容。

    public static void main(String[] args) {
        long output;
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            long nr1 = sc.nextLong();
            long nr2 = sc.nextLong();
            if (nr1 > nr2) {
                output = nr1 - nr2;
            } else {
                output = nr2 - nr1;
            }
            System.out.println(output);
        }
    }

同样,我正在寻找一种方法来在不再有包含两个数字的行时终止它。 我一直在为这个问题疯狂地谷歌搜索,但一直无法找到解决我的问题的解决方案。非常感谢任何帮助!

如果您想在输入 "" 时终止循环,那么只需在代码中添加一个 input 变量即可。

String input;
while(sc.hasNextLine() && !(input = sc.nextLine()).equals("")) {
    //Now you have your input and you need to parse it.
    //There are many ways to parse a string.
    String[] numbers = input.split(" ");
    int num1 = Integer.parseInt(numbers[0]);
    int num2 = Integer.parseInt(numbers[1]);
    
    System.out.println( num1 > num2 ? num1 - num2 : num2 - num1);
}