Java新手作业问题:如何避免重复打印同时被5和7整除的数字
解决Java打印1-100中被5或7整除数字避免重复的问题
问题描述
我是Java新手,正在完成练习作业,需要打印1到100之间所有能被5或7整除的数字,但现在同时被5和7整除的数字会被打印两次,请问最简单的避免重复打印的方法是什么?
原始代码
int sum = 0; int i=1; while (i <= 100) { //need to update the value of sum by i //sum = sum + i; /*if( i % 5 == 0 || i % 7 ==0 ) //if i is divisible by 5 or 7, let us display i { System.out.println(i); }*/ if ( i % 5 == 0) { System.out.println(i); } if ( i % 7 == 0) { System.out.println(i); } if ( i % 5 == 0 || i % 7 == 0) { sum = sum + i; } i=i+1; } System.out.println("the sum is: " + sum); System.out.println("Bye, for now!");
最简单的解决方法
直接用**逻辑或(||)**合并判断条件,只保留一个if语句处理打印逻辑:
把原来两个独立的if判断(分别检查被5、7整除)替换成一个if,条件写i % 5 == 0 || i % 7 == 0,这样同时满足两个条件的数字只会触发一次打印,彻底避免重复。
修改后的代码
int sum = 0; int i=1; while (i <= 100) { // 用逻辑或合并条件,避免重复打印 if( i % 5 == 0 || i % 7 ==0 ) { System.out.println(i); } if ( i % 5 == 0 || i % 7 == 0) { sum = sum + i; } i=i+1; } System.out.println("the sum is: " + sum); System.out.println("Bye, for now!");
原理说明
原来的代码会重复打印,是因为同时被5和7整除的数(比如35、70)会触发两个独立的if语句,导致两次println执行。而用||逻辑或判断时,只要满足其中一个条件就会执行一次代码块,即使两个条件都满足,也只会执行一次,自然不会出现重复打印的情况。
内容的提问来源于stack exchange,提问作者Sanskar W
相关产品推荐
相关产品推荐

