[英]Java prints “null” while taking in array of strings as input from the user using Scanner and ends abruptly
import java.util.Scanner;
class ArrayofArrays {
public static void main(String[] args) {
String[][] ListofNames = {
{"barbie","cinderella","troomtroom"},
{"wonderwoman","captainmarvel","Cheetah"}
};
for(String[] i : ListofNames) {
for(String x: i) {
System.out.println(x);
}
}
int r,c;
Scanner obj = new Scanner(System.in);
System.out.println("Enter rows\n");
r = obj.nextInt();
System.out.println("Enter columns\n");
c = obj.nextInt();
String[][] Inputnames = new String[r][c];
for(int j = 0;j<r;j++) {
for(int l = 0;l<c;l++) {
System.out.println("Enter name\n");
Inputnames[j][l] = obj.nextLine();
}
for(int m = 0;m<r;m++) {
for(int n = 0;n<c;n++) {
System.out.println(Inputnames[m][n]);
}
}
}
}
}
我正在學習 java 並且當我嘗試接收由字符串組成的 Arrays 數組作為用戶輸入時,它打印出 null 並且沒有進一步輸入。 我錯過了什么?
output在cmd上是這樣的:
C:\Users\dynam\Desktop\Java Files>java ArrayofArrays barbie cinderella troomtroom wonderwoman Captainmarvel Cheetah 輸入行
2 輸入列
1 輸入姓名
null 輸入名稱
蝙蝠俠
蝙蝠俠
我在幾個問題中經常看到這種情況。 此處更詳細地描述了該問題。
要解決您的問題,請將obj.nextInt()
替換為 Integer.parseInt Integer.parseInt(obj.nextLine())
。 所以基本上你的代碼應該如下所示:
System.out.println("Enter rows\n");
r = Integer.parseInt(obj.nextLine());
System.out.println("Enter columns\n");
c = Integer.parseInt(obj.nextLine());
如果您有任何機會在此處輸入 integer 以外的其他內容,則可能必須使用try-catch
塊來確保處理NumberFormatException
。
因為 Scanner.nextInt 方法不會讀取按“Enter”后創建的輸入中的換行符,因此對 Scanner.nextLine 的調用在讀取該新行后返回。
也看起來你的 for 循環搞砸了,試試下面的代碼(清理了一下) -
package com.example.demo;
import java.util.Scanner;
class ArrayofArrays {
public static void main(String[] args) {
String[][] ListofNames = {
{"barbie", "cinderella", "troomtroom"},
{"wonderwoman", "captainmarvel", "Cheetah"}
};
for (String[] i : ListofNames) {
for (String x : i) {
System.out.println(x);
}
}
int r, c;
Scanner obj = new Scanner(System.in);
System.out.println("Enter rows\n");
r = obj.nextInt();
System.out.println("Enter columns\n");
c = obj.nextInt();
obj.nextLine();
String[][] Inputnames = new String[r][c];
for (int j = 0; j < r; j++) {
for (int l = 0; l < c; l++) {
System.out.println("Enter name\n");
Inputnames[j][l] = obj.nextLine();
}
}
for (int m = 0; m < r; m++) {
for (int n = 0; n < c; n++) {
System.out.println(Inputnames[m][n]);
}
}
}
}
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.