import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class CmdTest {
public CmdTest() {} public static void main(String[] main) {
String cmd = "cmd.exe /k ping www.baidu.com";
String message = null;
try {
Process process = Runtime.getRuntime().exec(cmd);

BufferedReader br = new BufferedReader(
new InputStreamReader(process.getInputStream()));
while((message = br.readLine()) != null){
//if(!message.equals(""))
System.out.print(message+"\n");
}
br.close();
process.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这里我已经加上message!=null条件了,但是为什么还是跟原来命令行显示的多了些空行呢?如果再加上注释部分的条件,显示就跟原来命令行看到的不一样了,请问要怎么做才能正确显示呢?

解决方案 »

  1.   

    br.readLine()有可能有空白字符,并不是null
      

  2.   

    这个很简单啊,你判断的条件是message = br.readLine() != null,而你注释的条件是if(!message.equals(""))
    null和“”不是一个概念的,null是没有,而“”是有,但是值是空串的,所以你加后面的条件结果肯定不一样的哦
      

  3.   

    if(!message.equals(""))改成if(!message.trim().equals(""))试试?
      

  4.   

    如果我加上if(!message.equals("")的话,那显示就跟原来在命令行中显示的不一致了,必要的地方它本身带有空串,但输出的时候又自动添加了点空串这是为什么呢?
    这是命令行显示的
    这是javaIO流输出的
      

  5.   

    if(!message.equals(""))
    改成:
    if(message.length()!=0)