Java boolean возвращает false, хотя ответ должен быть правильным - PullRequest
0 голосов
/ 27 апреля 2018

В настоящее время я работаю над проектом Smartmirror с Raspberry Pi Zero W, и мне нужна моя java-программа для проверки интернет-соединения, чтобы я знал, могу ли я обновить данные о погоде. Для этого метода я использую команду iwgetid, чтобы получить SSID. Проблема в следующем: я беру возврат командной строки и помещаю его в блок if. Несмотря на то, что возвращение (которое я проверил, является правильным выводом) является правильным, логическое значение возвращает false в качестве вывода.

public boolean checkwifi() throws IOException, InterruptedException{
    ProcessBuilder ps = new ProcessBuilder("iwgetid");
    ps.redirectErrorStream(true);
    Process pr = ps.start();
    BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
    String line;
    line=in.readLine();
    line.trim();

    if(line == "wlan0     ESSID:\"mySSID\"" || line== "wlan0     ESSID:\"mysecondSSID\"" ){
    pr.waitFor();
    in.close();
    return true;    
    }
    else {
        System.err.println(line);
    pr.waitFor();
    in.close();
    return false;

    }
    }

Это вывод, который я получаю из консоли:

    wlan0     ESSID:"mySSID"
    false       

1 Ответ

0 голосов
/ 27 апреля 2018

if(line == "wlan0 ESSID:\"mySSID\"" || line== "wlan0 ESSID:\"mysecondSSID\"" ) сравнивает ссылку line на строку, и они отличаются.

Используйте line.equals("wlan0 ESSID:\"mySSID\"") || line.equals("wlan0 ESSID:\"mysecondSSID\"") для сравнения фактического значения строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...