一段时间以来,我一直在寻找答案,但是由于某种原因,它们似乎都不起作用。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter full name (last, first)");
String[] personalInfo = scanner.next().split(", ");
String firstName = personalInfo[1];
String lastName = personalInfo[0];
System.out.println("Your info: " + firstName + " " + lastName);
有我的代码。我基本上是在尝试获取个人信息,这将是名字和姓氏。我想将名字和姓氏分成2个不同的字符串,但是每当尝试打印此字符串时,都会出现错误:
线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:索引1>超出长度1的范围 在Fines.main(Fines.java:11)
我很困惑,因为我什至像我应该的那样以0开始数组。.我只是不明白什么是错误的。
请帮助我-预先感谢!
答案 0 :(得分:1)
线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException: 索引1>在Fines.main(Fines.java:11)处长度1超出范围
因为personalInfo
的大小是1
而不是2
。
使用nextLine()
代替next()
,因为next()
仅返回空格前的输入。
String[] personalInfo = scanner.next().split(", ");
应该是
String[] personalInfo = scanner.nextLine().split(", ");
您可能想阅读本What's the difference between next() and nextLine() methods from Scanner class?
答案 1 :(得分:1)
您想要的是scaner.nextLine()从标准输入读取直到行尾。然后拆分将按预期工作。
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter full name (last, first)");
String[] personalInfo = scanner.nextLine().split(", ");
String firstName = personalInfo[1];
String lastName = personalInfo[0];
System.out.println("Your info: " + firstName + " " + lastName);
答案 2 :(得分:0)
try (Scanner scan = new Scanner(System.in)) {
System.out.println("Please enter full name (last, first)");
String firstName = scan.next();
String lastName = scan.next();
System.out.println("Your info: " + firstName + ' ' + lastName);
}
scanner.next()
读取直到下一个定界符(默认为空格),因此仅准备firstName
。只需将其替换为scanner.nextLine()
或使用scanner.next()
两次。