簡體   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