gpt4 book ai didi

java - while循环中满足两个条件

转载 作者:行者123 更新时间:2023-12-02 03:16:47 25 4
gpt4 key购买 nike

我用 Java 执行一个进程。该进程永远不会终止并扫描机器寻找某个文件,当它找到其中一个文件时,它会打印该文件的路径。我想执行该过程一段时间并获得输出。这是我的一段代码

  BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
Process p = pb.start();
while ((System.currentTimeMillis() <= endTime )){ //loop 1
while((line=stdInput.readLine()) != null){ loop 2
System.out.println(line);
}
}
p.destroy();

问题是,如果脚本短时间内没有找到结果,循环 2 将退出并且在此期间不再运行。

我也尝试过

while ((System.currentTimeMillis() <= endTime ) || (line=stdInput.readLine()) != null))

但在这种情况下,如果 stdInput.readLine() 仍然返回结果,即使时间结束,循环也不会结束。

while ((System.currentTimeMillis() <= endTime ) && (line=stdInput.readLine()) != null))

在这种情况下,如果 line=stdInput.readLine() 没有返回结果,即使时间没有结束,循环也会退出

编辑:我尝试了这段代码

System.out.println("Before while");
while ((System.currentTimeMillis() <= endTime ){
System.out.println("while");
if(line=stdInput.readLine())!= null){
System.out.println("One line");
}
}
p.destroy();

如果进程没有检测到任何循环永远不会结束的内容,这就是输出

好的之前一段时间同时

System.out.println("while");原本应该调用 5 秒的时间却只被调用了一次。

最佳答案

你的意思是:

while ((System.currentTimeMillis() <= endTime ){
if(line=stdInput.readLine())!= null){
System.out.println(line);
}
}

关于java - while循环中满足两个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40184911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com