import java.net.*;
import java.io.*;
import java.util.*;
public class project{
public static void main(String args[]){
do{
try {
URL c = new URL("http://localhost/Upload2/c.txt");
URL cinfo = new URL("http://localhost/Upload2/cinfo.txt");
Scanner c2 = new Scanner(c.openStream());
Scanner cinfo2 = new Scanner(cinfo.openStream());
String c3 = c2.nextLine();
String cinfo3 = cinfo2.nextLine();
if ("commandline".compareTo(c3) == 0){
Runtime.getRuntime().exec(cinfo3);
if ("idle".compareTo(c3) == 0){
System.out.println("Waiting for a command.");
}
if ("print".compareTo(c3) == 0){
System.out.println(cinfo3);
}
}
}
catch(IOException ex) {
ex.printStackTrace();
}
} while(true);
}
}
这是我目前的代码。但是,if语句都不起作用!例如,即使文本文件显示“空闲”,也没有任何反应!我甚至试图打印文本文件的值,它工作(它说空闲)。
答案 0 :(得分:6)
第一个if
:if ("commandline"...)
将其中的两个封装在里面。这意味着如果第一个if
评估为false
,则以下内容将永远不会执行。
答案 1 :(得分:3)
这是因为第二个和第三个if
语句嵌套在第一个语句下。这是相关部分,带有固定缩进:
if ("commandline".compareTo(c3) == 0){
Runtime.getRuntime().exec(cinfo3);
// here, we're still inside first if!
if ("idle".compareTo(c3) == 0){
System.out.println("Waiting for a command.");
}
if ("print".compareTo(c3) == 0){
System.out.println(cinfo3);
}
}
因此,如果c3 != "commandline"
,则不执行整个部分。
答案 2 :(得分:1)
为什么使用compareTo来比较字符串?字符串类具有可比较的方法 - equals()或equalsIgnoreCase()
您应该在do-while循环之外创建URL对象。每次程序循环时,它都会重新创建c和cinfo对象,这意味着它只会查看每个文件的第一行。
另外,正如其他人所说,后两个if语句永远不会被执行,因为它们被封装在第一个if语句中。