0

当我运行这个程序时,它陷入了一个要求我“输入值:”的循环中,并继续在总和中加一。虽然这正是它应该做的,但如果我输入一个可被 6 或 17 整除的数字,则循环不会结束。能解释一下为什么吗?

导入 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);
   }
}
4

5 回答 5

1

您应该使用“&&”而不是“||”:

while (one % 6 != 0 && one % 17 != 0) {

如果数字可被 6 和 17 整除,您的旧条件只会停止循环。

于 2012-10-05T06:33:20.593 回答
0

条件有误,正确的条件是:

while(!(one % 6 == 0 || one % 17 == 0))

或者

while(one % 6 != 0 && one % 17 != 0)
于 2012-10-05T06:36:50.280 回答
0

我认为您将不得不使用Short-Circuit And而不是OR.

while (one % 6 != 0 && one % 17 != 0)

于 2012-10-05T06:37:23.910 回答
0

在这个条件下,您使用的是 OR;要离开 while 循环,您必须同时拥有one % 6 == 0one % 17 == 0。如果输入 102,则应退出循环。

要修复,请使用&&而不是||.

于 2012-10-05T06:33:36.373 回答
0

这只是一个建议,但您为什么不尝试创建一个方法来完成您尝试执行的任务,而不是将代码放在 main 方法中。这样做的原因是为了实践可重用性。这就是我的意思:

 public static void main(String[] args) {
       //Enter code here
       //Method Calls here
       }
 public someMethod here(arguements if needed)
 {
  //Body here
 }
于 2013-11-14T14:04:29.203 回答