JAVA使用用户输入填充2D数组

JAVA使用用户输入填充2D数组,java,multidimensional-array,Java,Multidimensional Array,我正在尝试填充一个NxN矩阵。我想做的是能够输入给定行的所有元素作为一个输入。例如,如果我有一个4x4矩阵,对于每一行,我想在一个输入中输入4列,然后在显示新值的每个输入后打印矩阵。我尝试运行以下代码,但得到一个错误,该错误为:线程“main”java.util.InputMismatchException中的异常。这是我的密码: double twoDm[][]= new double[4][4]; int i,j = 0; Scanner scan = new

我正在尝试填充一个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();

         }
     }

然后我得到了错误

你应该这样做

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();
double-twoDm[][]=新的双精度[4][4];
扫描仪扫描=新扫描仪(System.in);
int i,j;
对于(i=0;i<4;i++){
System.out.print(“输入4个数字,用逗号分隔:”);
String[]line=scan.nextLine().split(“,”);
对于(j=0;j<4;j++){
twoDm[i][j]=Double.parseDouble(第[j]行);
}
}
scan.close();

您也不应该忘记关闭扫描仪

1234在扫描仪上不可见为双数,而是整数

因此,您有以下几种可能性:

  • 如果您不需要双倍密码,请使用
    nextInt()
  • 写1.0,2.0,3.0,4.0而不是1,2,3,4
  • 以字符串形式读取值,并使用
    double.parseDouble()

我相信使用
string.split()
比使用
更容易。使用delimiter()
,因为在使用delimiter时,您必须用逗号输入最后一个数字(因为
comma
是分隔内容的一个)除非创建一些正则表达式以逗号和
\n
作为分隔符

另外,您应该给出提示-
System.out.print(“输入4个逗号分隔的数字:”)在外循环中,而不是在内循环中,因为您将在外循环中的每一行中获取,并且只在内循环的每一行中获取元素

你能行-

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]);
   }
}
double-twoDm[][]=新的双精度[4][4];
int i,j=0;
扫描仪扫描=新扫描仪(System.in);

对于(i=0;iIt是昨天问题的一部分,但我们都忽略了它;我如何在每次更新后的每次迭代中打印出整个矩阵?每次扫描后?您可以编写一个小的矩阵打印输出函数,并在内部循环后调用它…
for(i=0;i<4;i++){System.out.print(“输入4个逗号分隔的数字:”);String[]line=scan.nextLine().split(,”);for(j=0;j<4;j++){twoDm[i][j]=Double.parseDouble(line[j]);}printMatrixMethod();}
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]);
   }
}