我正在读取以下格式的字符串: ID 名字(包含中间名) 姓氏 出生年份
例如
722 大卫·贝克汉姆 1975
现在我只是使用这段代码:
ID = scannerStr.nextInt();
FirstName = scannerStr.next();
LastName = scannerStr.next();
BirthYr = scannerStr.nextInt();
但是你看,当有中间名的人出现时,这就失败了...... 例如
100 大卫·罗伯特·约瑟夫·贝克汉姆 1958
如何解决这个问题?如何检查我读取的是单词还是整数?
最佳答案
您对输入的建模不正确。
您当前的模型(如代码中所示)是这样的:
int string string int
您输入的真实模型似乎是这样的:
int string (string)* string int
您可以使用String.split()
正确解析它
String[] tokens = inputString.split(" ");
actorId = Integer.valueOf(tokens[0]);
actorFirstName = tokens[1];
actorLastName = tokens[tokens.length - 2];
actorBirthYear = Integer.valueOf(tokens[tokens.length - 1]);
查看 Apache Commons Lang用于空安全字符串操作的 StringUtils 类。
关于java - 检查字符串或整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165139/