【问题标题】:Java boolean returns false even though answer should be correct即使答案应该是正确的,Java 布尔值也会返回 false
【发布时间】:2018-10-08 14:44:01
【问题描述】:

我目前正在使用 Raspberry Pi Zero W 进行 Smartmirror 项目,我需要我的 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       

【问题讨论】:

  • 使用 String.equals("另一个字符串");或 String.contains("String");
  • 我建议在比较上述字符串时修剪和删除空格。

标签: java boolean processbuilder ssid


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2016-05-28
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多