当我运行这个程序时,它会陷入一个让我“输入值:”的循环中,并继续向总和添加一个。虽然这正是它应该做的,但如果我输入一个可被6或17整除的数字,则循环不会结束。可以解释为什么吗?
import java.util.Scanner;
public class DivisibleBy6or17 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.print("Enter Value: ");
int one = in.nextInt();
int sum=0;
while (one % 6 != 0||one % 17 != 0) {
System.out.print("Enter Value: ");
one = in.nextInt();
sum++;
}
System.out.print("Numbers read: " + sum);
}
}
答案 0 :(得分:1)
你应该使用“&&”而不是“||”:
while (one % 6 != 0 && one % 17 != 0) {
如果数字可以被6和17整除,那么旧条件只会停止循环。
答案 1 :(得分:0)
在此条件中,您正在使用OR;要离开while循环,您必须同时拥有one % 6 == 0
和one % 17 == 0
。如果输入102,则应该离开循环。
要解决此问题,请使用&&
代替||
。
答案 2 :(得分:0)
条件有错误,正确的条件是:
while(!(one % 6 == 0 || one % 17 == 0))
或
while(one % 6 != 0 && one % 17 != 0)
答案 3 :(得分:0)
我认为您必须使用Short-Circuit And
代替OR
。
while (one % 6 != 0 && one % 17 != 0)
答案 4 :(得分:0)
这只是一个建议,但为什么不尝试创建一个方法来执行您尝试执行的任务,而不是将代码放在main方法中。其原因是练习可重用性。这就是我的意思:
public static void main(String[] args) {
//Enter code here
//Method Calls here
}
public someMethod here(arguements if needed)
{
//Body here
}