如果语句不使用字符串

时间:2013-01-20 22:12:22

标签: java string if-statement

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语句都不起作用!例如,即使文本文件显示“空闲”,也没有任何反应!我甚至试图打印文本文件的值,它工作(它说空闲)。

3 个答案:

答案 0 :(得分:6)

第一个ifif ("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语句中。