按空格拆分字符串(java)

按空格拆分字符串(java),java,Java,我试图在一行中读取学生信息,该行包含ID、姓名、年龄和gpa。我想将行按空格分割,并将每个标记存储在拆分为[]的字符串数组中。为什么这段代码在String name=splited[1]行上给我ArrayOutOfBounds错误? 示例输入:3844吉姆30 3.4 多谢各位 String [] splited = new String [4]; System.out.println("Enter student Id, name, age and gpa: ")

我试图在一行中读取学生信息,该行包含ID、姓名、年龄和gpa。我想将行按空格分割,并将每个标记存储在拆分为[]的字符串数组中。为什么这段代码在
String name=splited[1]行上给我ArrayOutOfBounds错误?
示例输入:
3844吉姆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]);
为什么不直接使用“”而不是“\s”来拆分输入。你应该检查输入的有效性


实际问题是:keyboard.next()只读取下一个单词(空格是扫描仪的默认分隔符)。请改用keyboard.nextLine()

String info=keyboard.next()
返回第一个
字符串
,在您的情况下,该字符串由一个空格分隔(即
id


尝试使用
String info=keyboard.nextLine()
将返回新行字符之前的全部内容。然后您可以使用
String#split
(或另一个
扫描仪
)解析文本

您是否尝试过split(“”)@Blueriver是的,我仍然得到与示例输入相同的错误显示请注意
新字符串[4]
是无用的。这将创建一个包含四个元素(全部
null
)的新数组,您将
splited
分配给它--
splited
实际上是对数组对象的引用。但是,当您将
splited
分配给
split()
的结果时,您将其分配给另一个数组的引用,四元素数组将变成垃圾。创建4元素数组对拆分没有任何影响,拆分后的数组从未看到原始数组。sry,我只是注意到:实际问题在其他地方:键盘。next()只读取下一个单词(空格是扫描仪的默认分隔符)。改用keyboard.nextLine()。这就解决了问题!谢谢,如果你做了必要的修改,我会选择正确的答案。