我正在尝试在一行中读取学生信息,该行包含ID,姓名,年龄和gpa。我想用空格分割行,并将每个标记存储在我的字符串数组Splited []中。为什么这段代码在行String name = splited[1];
上给出了ArrayOutOfBounds错误?
样本输入:3844 Jim 30 3.4
谢谢
String [] splited = new String [4];
System.out.println("Enter student Id, name, age and gpa: ");
String info = keyboard.next();
//separate student info line by spaces
splited = info.split("\\s");
int id = Integer.parseInt(splited[0]);
String name = splited[1];
int age = Integer.parseInt(splited[2]);
double gpa = Double.parseDouble(splited[3]);
答案 0 :(得分:2)
String info = keyboard.next();
返回的第一个String
在您的情况下以空格分隔(因此为id
)。
尝试使用String info = keyboard.nextLine();
,它会将整个内容返回到换行符。然后,您可以使用String#split
(或其他Scanner
)来解析文本
答案 1 :(得分:0)
为什么不简单地使用" "而不是" \ s"拆分输入。你应该检查输入的有效性。
实际问题是:keyboard.next()只读取下一个单词(space是扫描程序的defaultdelimiter)。请改用keyboard.nextLine()。