我正在尝试让扫描仪读取每行数据,并打印出包含单词“model”的行,然后在我设置的边界内打印一年。我不确定是否有更有效的方法来做到这一点,但我为整个数据集制作了一个Scanner,然后在其中我声明了另一个读取每一行的数据。然后,我尝试将其设置为查找包含单词“model”的字符串以及该行包含正确年份的年份。由于扫描仪中的令牌按空格划分,我认为正确的方法是声明一个不同的String,tokenToken,它将第一个令牌与空格和年份组合在一起,如果存在这样的组合。
目前,当我运行它时,它只会永远运行,但永远不会完成
public static void main(String[] args) {
Scanner inStream = new Scanner(System.in);
while (inStream.hasNext()) {
String line = inStream.nextLine();
Scanner lineStream = new Scanner(line);
while (lineStream.hasNext()) {
String token = lineStream.next();
if (token.matches("model") && lineStream.hasNextInt()) {
int year= lineStream.nextInt();
if ((year>= 1976) && (year <= 2013)) {
String tokenToken = (token + " " + year);
if (lineStream.hasNext(tokenToken)) {
System.out.println(line);
} else {
}
}
}
}
lineStream.close();
}
inStream.close();
}
答案 0 :(得分:0)
首先,从哪里获取int?
lineStream.hasNextInt()
??所有我能看到的就是弦乐。
编辑: 我认为这就是你要分割字符串并正确处理它的方法。
Scanner input = new Scanner(System.in);
String name = input.nextLine();
String[] parts = name.split(" ");
String part1 = parts[0];
String part2 = parts[1];
int year = Integer.parseInt(part2);
if(part1.contains("model")){
if((year >= 1976) && (year <= 2013)){
System.out.println(name);
}else{
System.out.println("wtf?");
}
}
}
现在你需要做的就是将它放入所需时间/大小的循环中