Java 简单可除性
当我运行这个程序时,它陷入了一个要求我“输入值”的循环中,并继续在总和中加一。虽然这正是它应该做的,但如果我输入一个可以被6或17整除的数字,循环就不会结束。你能解释为什么吗 导入java.util.ScannerJava 简单可除性,java,Java,当我运行这个程序时,它陷入了一个要求我“输入值”的循环中,并继续在总和中加一。虽然这正是它应该做的,但如果我输入一个可以被6或17整除的数字,循环就不会结束。你能解释为什么吗 导入java.util.Scanner public class DivisibleBy6or17 { public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.pri
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);
}
}
您应该使用“&&”而不是“||”:
旧条件仅当数字可被6和17整除时停止循环。在此条件中,您使用的是OR;要离开while循环,您必须同时拥有
one%6==0
和one%17==0
。如果输入102,则应退出循环
若要修复,请使用
&&
而不是|
如果条件有错误,正确的条件是:
while(!(one % 6 == 0 || one % 17 == 0))
或
我认为您将不得不使用
短路和
,而不是或
while(一个%6!=0和一个%17!=0)
这只是一个建议,但是为什么不尝试创建一个方法来完成您尝试执行的任务,而不是将代码放在主方法中呢。这样做的原因是为了实践可重用性。我的意思是:
public static void main(String[] args) {
//Enter code here
//Method Calls here
}
public someMethod here(arguements if needed)
{
//Body here
}
1%6!=0 | |一%17!=0
尝试用括号括起来,因为很难了解发生了什么。此外,它还可能泄漏优先级混乱的问题
while(one % 6 != 0 && one % 17 != 0)
public static void main(String[] args) {
//Enter code here
//Method Calls here
}
public someMethod here(arguements if needed)
{
//Body here
}