java - 在 for 循环中,Println 函数使循环永远循环。为什么会这样?
问题描述
我找到了一些编程练习,但这个没有解决。程序将输入作为整数,然后将您给出的素数的数量相加。我知道代码会失败,但是当我尝试调试它时,如果我运行注释的 println 函数会发现一些有趣的东西,然后循环将永远持续并且永远不会自行终止。有人可以解释为什么吗?
static void problem11() {//summing prime numbers
System.out.println("how many numbers do you want?");
int aim = scanner.nextInt();
int count = 0;
int datum = 2;
int sum = 0;
while(count<aim) {
boolean prime = true;
for(int i=datum-1; i>=2; i--) {
**//System.out.println("inside for, datum: " + datum);**
if(datum%i==0)
**//System.out.println(datum +" is not a prime number");**
prime = false;
}
if(prime) {
System.out.println("one prime found");
count++;
sum += datum;
}
datum++;
}
System.out.printf("\nSum of first %d prime numbers is: %d", aim, sum);
}
感谢@Andy、@MauricePerry 和@Nevexis。是的,我知道我应该使用大括号,但我正在尝试缩短代码以提高可读性,但作为初学者,我可能会保持安全。
解决方案
另一个注意事项 - 如果您从字面上取消注释第二个 println (“不是素数......”),由于 if 语句缺少大括号,它会改变逻辑。– Andy 4 小时前 感谢您的帮助,这就是答案。
推荐阅读
- python - 基于使用 CustomJS 回调的下拉列表在 Bokeh 中创建动态 HoverTool 工具提示
- excel - 复制工作表时有没有办法将单元格向左移动?
- azure - 为多个队列并行调用相同的 queuetrigger 函数
- python - 列表值交换:正确的顺序是什么,为什么?
- java - 尽管列表中的所有对象都相等,但 List.equals 为假
- python - 使用 BeautifulSoup 抓取 Google 搜索
- javascript - 从带有数组作为条目的 Map 创建 JSON 字符串
- javascript - navigator.serviceWorker 用于开发环境
- uwp - [C#][UWP] 如何获取网站HTTPS的完整Cookies
- javascript - npm 包丢失文件夹