Java 布尔值 returns false 即使答案应该是正确的
Java boolean returns false even though answer should be correct
我目前正在开发一个 Raspberry Pi 零 W 的 Smartmirror 项目,我需要我的 java 程序来检查互联网连接,以便我知道我是否可以更新我的天气数据。对于此方法,我使用 iwgetid 命令获取 SSID。问题如下:我将命令行的 return 放入 if 块中。即使 return(我检查过的是正确的输出)是正确的布尔值 returns 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\"")
比较字符串的实际值。
我目前正在开发一个 Raspberry Pi 零 W 的 Smartmirror 项目,我需要我的 java 程序来检查互联网连接,以便我知道我是否可以更新我的天气数据。对于此方法,我使用 iwgetid 命令获取 SSID。问题如下:我将命令行的 return 放入 if 块中。即使 return(我检查过的是正确的输出)是正确的布尔值 returns 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\"")
比较字符串的实际值。