java equals 和 hasNext 的用法

java usage of equals and hasNext

为什么这段代码不停? "scanner.equals(null)" 和 "scanner.hasNext() == false" 不是相同或至少相同的角色吗?

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 1;
        while(true) {
            if(scanner.equals(null))
                break;
            else {
                String line = scanner.nextLine();
                System.out.println(i + " " + line);
                i++;
            }
        }
    }
}

scanner.equals(null) 将始终 return 错误。它检查对象实例是否为空,是否为空。相比之下,scanner.next() 检查扫描仪是否可以找到令牌。

无论如何,你使用的是nextLine方法,所以你应该使用hasNextLine,而不是hasNext:

    while(scanner.hasNextLine()) {
        String line = scanner.nextLine();
        System.out.println(i + " " + line);
        i++;
    }