检查字符串或int

时间:2013-03-01 19:14:17

标签: java input

我正在阅读以下格式的字符串: ID名字(包含中间名)姓氏birthYear

例如

722 David Beckham 1975

现在我只是使用这段代码:

ID = scannerStr.nextInt();

FirstName = scannerStr.next();

LastName = scannerStr.next();

BirthYr = scannerStr.nextInt();

但是当你看到有中间名的人出现时,这就失败了...... 例如

100大卫罗伯特约瑟夫贝克汉姆1958年

如何解决这个问题?如何检查我读的是单词还是int?

2 个答案:

答案 0 :(得分:1)

您已错误地模拟输入。

您当前的模型(如代码所示)是:

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类以获取空安全字符串操作。

答案 1 :(得分:1)

IMO最好的解决方案是分割所有内容并将每个单词保存在字符串数组中,最后一个单词将是一个数字,第一个单词将是一个id,你可以知道最后一个单词之前的单词是姓氏,其余的只是名字!代码未经过测试,此代码可以将文本中的第一个单词拆分,将其应用到整个字符串中,然后就完成了!

boolean flag = true;
String someWord ="";
int j = 0;
int i = 0;
String[] wordCollector;
while (flag) {
 if (word.substring(i,i+1).equals(" ")) {
  someWord = someWord + word.substring(i,i+1);
  i++;
 }
 else {
 wordCollector[j] = 
 j++;
 flag = false;
 someWord="";
 }
}