簡體   English   中英

Java boolean返回false,即使答案應該正確

[英]Java boolean returns false even though answer should be correct

我目前正在使用Raspberry Pi Zero W進行Smartmirror項目,並且需要Java程序來檢查Internet連接,以便知道可以更新天氣數據。 對於這種方法,我使用iwgetid命令來獲取SSID。 問題如下:我返回命令行並將其放入if塊中。 即使return(我檢查的是正確的輸出)是正確的,布爾值也會返回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       

if(line == "wlan0 ESSID:\\"mySSID\\"" || line== "wlan0 ESSID:\\"mysecondSSID\\"" )line的引用與字符串進行比較,它們是不同的。

使用line.equals("wlan0 ESSID:\\"mySSID\\"") || line.equals("wlan0 ESSID:\\"mysecondSSID\\"") line.equals("wlan0 ESSID:\\"mySSID\\"") || line.equals("wlan0 ESSID:\\"mysecondSSID\\"")比較字符串的實際值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM