[英]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.