java использование equals и hasNext - PullRequest
0 голосов
/ 27 марта 2020

почему этот код не останавливается? Разве «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++;
            }
        }
    }
}

1 Ответ

1 голос
/ 27 марта 2020

scanner.equals(null) всегда будет возвращать false. Он проверяет, является ли экземпляр объекта нулевым, и это не так. Для сравнения, scanner.next() проверяет, может ли сканер найти токен.

В любом случае, вы используете метод nextLine, поэтому вам следует использовать hasNextLine, а не hasNext:

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