Java boolean返回false,即使答案应该是正确的
我目前正在使用Raspberry Pi Zero W进行一个Smartmirror项目,我需要我的java程序来检查互联网连接,以便知道我是否可以更新天气数据。对于这个方法,我使用iwgetid命令来获取SSID。问题如下:我获取命令行的返回并将其放入if块中。即使返回值(我选中的是正确的outprint)是正确的,布尔值也会返回false作为输出Java boolean返回false,即使答案应该是正确的,java,boolean,processbuilder,ssid,Java,Boolean,Processbuilder,Ssid,我目前正在使用Raspberry Pi Zero W进行一个Smartmirror项目,我需要我的java程序来检查互联网连接,以便知道我是否可以更新天气数据。对于这个方法,我使用iwgetid命令来获取SSID。问题如下:我获取命令行的返回并将其放入if块中。即使返回值(我选中的是正确的outprint)是正确的,布尔值也会返回false作为输出 public boolean checkwifi() throws IOException, InterruptedException{ P
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:\“mysecondSID\”)
比较字符串的实际值。使用String.equals(“另一个字符串”);或字符串。包含(“字符串”);我建议在比较上述字符串时修剪和删除空白。