我正在尝试填充NxN矩阵。我想要做的是能够将给定行的所有元素作为一个输入输入。因此,例如,如果我有一个4x4矩阵,对于每一行,我想在一个输入中输入4列,然后在显示新值的每个输入后打印矩阵。我尝试运行以下代码,但是我得到一个错误:线程中的异常" main" java.util.InputMismatchException。这是我的代码:
double twoDm[][]= new double[4][4];
int i,j = 0;
Scanner scan = new Scanner(System.in).useDelimiter(",*");
for(i =0;i<4;i++){
for(j=0;j<4;j++){
System.out.print("Enter 4 numbers seperated by comma: ");
twoDm[i][j] = scan.nextDouble();
}
}
当我收到输入4个数字的提示时,我输入以下内容:
1,2,3,4
然后我收到错误。
答案 0 :(得分:4)
你应该这样做;
double twoDm[][] = new double[4][4];
Scanner scan = new Scanner(System.in);
int i, j;
for (i = 0; i < 4; i++) {
System.out.print("Enter 4 numbers seperated by comma: ");
String[] line = scan.nextLine().split(",");
for (j = 0; j < 4; j++) {
twoDm[i][j] = Double.parseDouble(line[j]);
}
}
scan.close();
你也不应该忘记关闭扫描仪!
答案 1 :(得分:2)
1 2 3 4扫描仪不能看到双数字,而是整数。
所以你有以下几种可能:
double
使用nextInt()
double
Double.parseDouble()
答案 2 :(得分:2)
我认为使用string.split()
而不是.useDelimiter()
会更容易,因为在使用分隔符时,您还必须使用逗号输入最后一个数字(因为comma
除非你创建一些正则表达式以逗号和\n
作为分隔符,否则它是一个分隔符。
另外,你应该在外部循环中给出提示符 - System.out.print("Enter 4 numbers separated by comma: ");
,而不是内部循环,因为你将接受外部循环中的每一行,并且只接受内部循环中每行中的元素。
你可以做 -
double twoDm[][]= new double[4][4];
int i,j = 0;
Scanner scan = new Scanner(System.in);
for(i =0;i<4;i++){
System.out.print("Enter 4 numbers separated by comma: ");
String row = scan.nextLine().split(",");
for(j=0;j<4;j++){
twoDm[i][j] = Double.parseDouble(row[j]);
}
}