0

我试图让扫描仪读取每一行数据,并且只打印出包含“模型”一词的行,然后在我设置的边界内打印出一年。我不确定是否有更有效的方法来做到这一点,但我为整个数据集制作了一个扫描仪,然后在其中我声明了另一个读取每一行的扫描仪。然后,我尝试将其设置为查找由单词“model”加上年份组成的字符串,如果该行包含正确的年份。由于扫描仪中的标记由空格分隔,我认为正确的方法是声明一个不同的字符串,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();
}
4

1 回答 1

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?");
        }
    }
}

现在您要做的就是将其放入所需时间/大小的循环中,无论您想要什么

于 2013-09-15T17:06:27.250 回答