简单的可分性

时间:2012-10-05 06:30:15

标签: java

当我运行这个程序时,它会陷入一个让我“输入值:”的循环中,并继续向总和添加一个。虽然这正是它应该做的,但如果我输入一个可被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);
   }
}

5 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

在此条件中,您正在使用OR;要离开while循环,您必须同时拥有one % 6 == 0one % 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
 }