gpt4 book ai didi

java - while(true) 不等于 while(!false)

转载 作者:行者123 更新时间:2023-11-29 08:31:27 26 4
gpt4 key购买 nike

我目前正在从事一个开发客户端/服务器软件的项目。我有一个奇怪的问题,希望能解决它,但我完全无法解释原因,我搜索了很长时间。

我想在服务器端有一个 while(true) 循环来强制服务器在前一个关闭套接字之后继续接受客户端。

所以我试着这样构建它:

public void run() {

Socket socket;

while(true) {
try {
socket = server.accept();

BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());

while (socket.isConnected()) {
// TODO income handling
}

in.close();
out.close();
socket.close();

} catch (Exception e) {
break;
}
}
}

但是我收到了 Intellij 的错误消息,告诉我要为这个循环添加一个结束条件。但是我在捕获语句中有一个。改变

while(true)

while(!false)

导致错误信息消失。任何人都可以向我解释其中的区别以及为什么第一次尝试没有成功吗?我发现在研究过程中多次这样做。

最佳答案

首先,IntellJ IDEA 检查的目的是帮助你快速发现有问题的代码,而不是让你的日子不好过。您绝对不应该为了让您的 IDE 满意而更改您的代码。

默认情况下,此检查(“'while' 语句无法在不抛出异常的情况下完成”)产生警告。因此,如果您真的遇到错误,那么您可能不小心更改了此检查的设置。可以在编辑器 > 检查选项卡的设置对话框中找到可用检查列表及其严重性设置。

关于 while (true)while (!false) 的区别:它们都将生成相同的字节码,因此没有区别,只是缺少这种意图实现。

如果您不想看到针对特定意图的警告,您可以:

  1. 将文本插入符放在突出显示的代码上(在本例中为 while)
  2. Alt-Enter
  3. 在刚刚打开的上下文菜单中选择“Inspection 'Infinite loop statement' options”

或者

  • 为此特定语句禁用它(菜单项“抑制语句”)
  • 完全禁用此检查(菜单项“禁用检查”)
  • 或打开设置对话框(菜单项“编辑检查配置文件设置”)。

关于java - while(true) 不等于 while(!false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47779938/

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