繁体   English   中英

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

[英]JAVA populate 2D array with user input

我正在尝试填充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

然后我得到了错误。

你应该这样做;

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 3 4为双数字,而是整数。

所以你有以下几种可能性:

  • 如果你不需要double使用nextInt()
  • 写1.0,2.0,3.0,4.0而不是1,2,3,4
  • 将值读取为字符串并使用Double.parseDouble()将它们转换为double

我相信使用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]);
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM