Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单可除性_Java - Fatal编程技术网

Java 简单可除性

Java 简单可除性,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

当我运行这个程序时,它陷入了一个要求我“输入值”的循环中,并继续在总和中加一。虽然这正是它应该做的,但如果我输入一个可以被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);
   }
}
您应该使用“&&”而不是“||”:


旧条件仅当数字可被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
 }