Java:使用空格或输入作为分隔符扫描输入时的不同输出
我试图从用户那里获取输入,并使用Java8(IDEBlueJ,Windows10)将其打印到控制台。 打印输出时有一个错误:程序打印方程式2两次,而不是打印方程式1和方程式2 代码如下: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);
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 b2123456
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;)