0

このプログラムを実行すると、「値を入力してください:」というループが発生し、合計に1を加算し続けます。これはまさにそれが行うことになっていることですが、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

この条件では、OR を使用しています。while ループを抜けるには、one % 6 == 0との両方が必要ですone % 17 == 0。102 を入力した場合は、ループを終了する必要があります。

修正するには、&&代わりに を使用し||ます。

于 2012-10-05T06:33:36.373 に答える
0

これは単なる提案ですが、メイン メソッドにコードを配置するのではなく、実行しようとしているタスクを実行するメソッドを作成してみてはいかがでしょうか。その理由は、再利用性を実践するためです。これが私が意味することです:

 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 に答える
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 に答える