Мой код возвращает строку с логическим и булево с ошибкой строки для моих BufferedReader и FileReader, где моя ошибка? - PullRequest
0 голосов
/ 11 октября 2018

Вот мой код:

import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;

public class SymbolBalance{
    public static void main(String[] args) throws Exception{
        File givenFile = null;
        String words = null;

        if(args.length > 0){
            givenFile = new File(args[0]);
        } else{
            System.out.println("Error! No file name was given!");
        }      
        BufferedReader scan = new BufferedReader(new FileReader(givenFile));

        while(words = scan.readLine() != null){
            System.out.println(words);
        }
        scan.close();
    }
}

Вот моя ошибка:

codio@titanic-avenue:~/workspace$ javac SymbolBalance.java
SymbolBalance.java:21: error: incompatible types: boolean cannot
 be converted to String
            while(words = scan.readLine() != null){
                                      ^
SymbolBalance.java:21: error: incompatible types: String cannot
be converted to boolean
            while(words = scan.readLine() != null){

Я пытаюсь получить файл из командной строки, отсканировать его, затем распечататьто, что файл говорит построчно в терминале.Я знаю, что bufferedreader не работает напрямую со строками, поэтому я использую FileReader, но все же я получаю логическое значение для строки и строку для логической ошибки.Может ли кто-нибудь указать мне правильное направление в поиске этой ошибки?

1 Ответ

0 голосов
/ 11 октября 2018

Вы должны окружить присвоение фигурными скобками, например:

while ((words = scan.readLine()) != null)

Причина в том, что приоритет оператора присваивания в Java ниже, чем приоритет оператора неравенства.На самом деле приоритет оператора присваивания является наименьшим из возможных.Для более подробной информации вы можете посмотреть на https://introcs.cs.princeton.edu/java/11precedence/

...