有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检查一个字符串是否等于另一个字符串的子字符串

我试图用下面的代码检查一个字符串是否与另一个相同,或者它是否是它的一部分:

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;


public class Comparison {

    static void compare() throws FileNotFoundException {

        Scanner queries = new Scanner(new FileReader("./out.txt"));
        Scanner folks = new Scanner(new FileReader("./tal.txt"));
        int index1 = 0;
        while ( queries.hasNextLine() ){
            String check = queries.next();

            while (folks.hasNextLine()) {
                String toCheck = folks.next();
                index1 = toCheck.indexOf(check);
            }//while
        }//while

        System.out.println("Result: "+ index1);
    }
}

但我得到的错误如下:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:838)
    at java.util.Scanner.next(Scanner.java:1347)
    at results.Comparison.compare(Comparison.java:28)
    at results.Main.main(Main.java:42)

有什么问题吗?我该怎么做


共 (1) 个答案

  1. # 1 楼答案

    我认为你需要使用nextLine(),而不是next()。 例如:

    String check = queries.nextLine();
    

    以及:

    String toCheck = folks.nextLine();
    

    因为默认的分隔符是空白,所以如果文件末尾有一个空行(可能还有其他内容),则可能没有next(),即使hasNextLine()返回true也是如此。始终使用与正在使用的下一个*()对应的hasNext*()方法(反之亦然;-)