Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扫描器和多个if语句_Java_Java.util.scanner - Fatal编程技术网

Java 扫描器和多个if语句

Java 扫描器和多个if语句,java,java.util.scanner,Java,Java.util.scanner,我试图让扫描仪读取每一行数据,只打印出包含单词“model”的行,然后在我设定的边界内打印一年。我不确定是否有更有效的方法来做到这一点,但我为整个数据集制作了一个扫描仪,然后在其中我声明了另一个扫描仪来读取每行数据。然后,我尝试将其设置为查找由单词“model”加上年份(如果该行包含正确的年份)组成的字符串。由于扫描器中的令牌被空格分割,我认为正确的方法是声明一个不同的字符串tokenToken,它将第一个令牌与空格和年份(如果存在这样的组合)组合在一起 目前,当我运行它时,它只会永远运行,但永

我试图让扫描仪读取每一行数据,只打印出包含单词“model”的行,然后在我设定的边界内打印一年。我不确定是否有更有效的方法来做到这一点,但我为整个数据集制作了一个扫描仪,然后在其中我声明了另一个扫描仪来读取每行数据。然后,我尝试将其设置为查找由单词“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();
}
publicstaticvoidmain(字符串[]args){
扫描器内流=新扫描器(System.in);
while(inStream.hasNext()){
字符串行=inStream.nextLine();
扫描仪行流=新扫描仪(行);
while(lineStream.hasNext()){
字符串标记=lineStream.next();
if(token.matches(“model”)&&lineStream.hasnetint(){
int year=lineStream.nextInt();

如果((年>=1976)和((年开始),你从哪里得到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?");
        }
    }
}
扫描仪输入=新扫描仪(System.in);
字符串名称=input.nextLine();
String[]parts=name.split(“”);
字符串part1=零件[0];
字符串part2=零件[1];
int year=Integer.parseInt(第2部分);
if(part1.contains(“model”){

如果((year>=1976)和((year)“它只是永远运行,而不是编译”,那么它是否编译?我的意思是,当输入数据时,什么都不会发生。@user2781450您是否介意使用scanner将该行提取为一个字符串,并将该字符串拆分为一个字符串数组,然后分析(循环)该数组,以找到“model”+“+”year(year>=1976)和(year)