Java:使用空格或输入作为分隔符扫描输入时的不同输出

Java:使用空格或输入作为分隔符扫描输入时的不同输出,java,java.util.scanner,println,Java,Java.util.scanner,Println,我试图从用户那里获取输入,并使用Java8(IDEBlueJ,Windows10)将其打印到控制台。 打印输出时有一个错误:程序打印方程式2两次,而不是打印方程式1和方程式2 代码如下: import java.util.Scanner; public class Equations { public static void main (String[] args) { Scanner scan = new Scanner (System.in);

我试图从用户那里获取输入,并使用Java8(IDEBlueJ,Windows10)将其打印到控制台。 打印输出时有一个错误:程序打印方程式2两次,而不是打印方程式1和方程式2

代码如下:

import java.util.Scanner;

public class Equations
{
        public static void main (String[] args)

    {
        Scanner scan = new Scanner (System.in); 

        System.out.println("This program solves a system of 2 linear equations");
        System.out.println("Enter the coefficients a11 a12 a21 a22 b1 b2");

        int a11 = scan.nextInt();
        int a12 = scan.nextInt();
        int a21 = scan.nextInt();
        int a22 = scan.nextInt();
        int b1 = scan.nextInt();
        int b2 = scan.nextInt();

        System.out.println("Eq1: "+ a11 +"*x1+"+ a12 +"*x2="+ b1);
        System.out.println("Eq2: "+ a21 +"*x1+"+ a22 +"*x2="+ b2);

    }
}
这是预期输出:

本程序求解一个由2个线性方程组组成的系统 系数a11 a12 a21 a22 b1 b2
123456
Eq1:1*x1+2*x2=5
Eq2:3*x1+4*x2=6

这是输出:

本程序求解一个由2个线性方程组组成的系统 系数a11 a12 a21 a22 b1 b2
123456
Eq2:3*x1+4*x2=6
Eq2:3*x1+4*x2=6

请注意,该错误仅在数字之间有空格的单行上键入输入时存在,而在每个数字后按Enter键时不存在

也就是说,如果一次输入一个数字,则正确接收预期输出:

本程序求解一个由2个线性方程组组成的系统 系数a11 a12 a21 a22 b1 b2

1

2

3

4

5

6

Eq1:1*x1+2*x2=5
Eq2:3*x1+4*x2=6

因为很难相信,也很难复制,这里有一个截图:

当输入以空格分隔的单行形式出现时,与输入以回车分隔的单行形式出现时,是什么导致了差异


当输入是单行格式时,如何获得所需的输出?

看起来像是IDE的一个bug。考虑以下事项:

import java.util.Scanner;

public class Equations
{
    public static void main (String[] args) {

        Scanner scan = new Scanner("1 2 3 4 5 6");

        System.out.println("This program solves a system of 2 linear equations");
        System.out.println("Enter the coefficients a11 a12 a21 a22 b1 b2");

        int a11 = scan.nextInt();
        int a12 = scan.nextInt();
        int a21 = scan.nextInt();
        int a22 = scan.nextInt();
        int b1 = scan.nextInt();
        int b2 = scan.nextInt();

        System.out.println("Eq1: "+ a11 +"*x1+"+ a12 +"*x2="+ b1);
        System.out.println("Eq2: "+ a21 +"*x1+"+ a22 +"*x2="+ b2);

    }
}
这是完全相同的代码,只是它不依赖用户输入。输入用空格分隔,输出为预期值:

This program solves a system of 2 linear equations
Enter the coefficients a11 a12 a21 a22 b1 b2
Eq1: 1*x1+2*x2=5
Eq2: 3*x1+4*x2=6

尝试显式设置分隔符:

scan = new Scanner(System.in).useDelimiter(" |\n");

我无法复制它。你能在
ideone.com
上复制它吗?我唯一能想象的是你运行的类不是根据你发布的代码编译的。代码有效,请参阅:@User8461只有当你在每个数字后按Enter键时,它才有效,如果你在同一行用空格键入所有这些数字,则会出现错误。@noamsteiner我们相信你。我们还认为您正在使用的IDE中有一个以前没有人听说过的bug;)