即使答案正确,Java boolean也会返回false

时间:2018-04-27 17:47:45

标签: java boolean processbuilder ssid

我目前正在使用Raspberry Pi Zero W进行Smartmirror项目,我需要我的java程序来检查互联网连接,以便我知道我可以更新我的天气数据。对于此方法,我使用iwgetid命令获取SSID。问题如下:我返回命令行并将其放入if块。即使返回(我检查的是正确的outprint)是正确的,boolean也会返回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 :(得分:1)

if(line == "wlan0 ESSID:\"mySSID\"" || line== "wlan0 ESSID:\"mysecondSSID\"" )line的引用与字符串进行比较,它们是不同的。

使用line.equals("wlan0 ESSID:\"mySSID\"") || line.equals("wlan0 ESSID:\"mysecondSSID\"")比较字符串的实际值。