2

1 から 100 までの整数のうち、6 または 7 で割り切れるが両方で割り切れないものを表示するプログラムを作成しようとしています。

これが私のコードです:

import acm.program.*;

public class Problem4 extends ConsoleProgram
{
    public void run()
    {
        for (int i = 1; i <= 100; i++)
        {
            boolean num = ((i % 6 == 0) || (i % 7 == 0));

            if (num == true)
            println(i + " is divisible");
        }
    }
}

上記のコードは、次の回答を示しています: 6,7,12,14,18,21,24,28,30,35,36, 42 ,48,49,54,56,60,63,66,70,72, 77,78, 84 ,90,91,96,98

これで、太字の数字 42 と 84 は両方とも 6 と 7 で割り切れます。上記のコードで||toを変更すると、結果は 42 と 84 だけを示します。&&

最終結果からこれら 2 つの数値を削除するには、どのような変更を行う必要がありますか?

4

8 に答える 8

19

XORは行く方法です。

import acm.program.*;

public class Problem4 extends ConsoleProgram {
  public void run() {
    for (int i = 1; i <= 100; i++) {
      if ( (i % 6 == 0) ^ (i % 7 == 0) ) {
        println(i + " is divisible");
      }
    }
  }
}
于 2009-06-27T19:27:49.353 に答える
8

条件を次のようにする必要があります。

boolean num = (i % 6 == 0 || i % 7 == 0) && !(i % 6 == 0 && i % 7 == 0);

それは基本的に「両方ではない」をJavaコードに変換しています:)

于 2009-06-27T19:21:51.457 に答える
5

「しかし両方ではない」には追加のチェックが必要です。私はそれがあるべきだと思います:

boolean num = ((i % 6 == 0) || (i % 7 == 0)) && (i % 42 != 0);

于 2009-06-27T19:19:44.283 に答える
5

あなたも試すことができます

boolean num = ((i % 6 == 0) != (i % 7 == 0));
于 2009-06-27T21:14:02.883 に答える
2

6 と 7 で割り切れるとはどういう意味か考えてみてください... 宇宙とすべての命の答えです。

于 2009-06-27T19:18:52.350 に答える
1
import acm.program.*;

public class Problem4 extends ConsoleProgram
{
    public void run()
    {
        for (int i = 1; i <= 100; i++)
        {
            boolean num = ((i % 6 == 0) || (i % 7 == 0));
            boolean both = ((i % 6 == 0) && (i % 7 == 0));

            if ((num == true) &&  (both == false))
            println(i + " is divisible");
        }
    }
}
于 2009-06-27T19:21:17.620 に答える
0

これは、C ++でも機能するはずのスニペットですが、ブール値に変更されます...

int value;
if ((value % 6 == 0 && value % 7 != 0) || (value % 6 != 0 && value % 7 == 0))
    cout << "Is " << value << " divisible by 6 or 7, but not both? true" << endl;
  else
    cout << "Is " << value << " divisible by 6 or 7, but not both? false" << endl;
于 2009-06-27T21:39:12.613 に答える
0

少し簡略化したバージョン

for(int i=1; i<=100; i++) {

            // Either Divisible by 6 or 7 but not both


            if((i%6==0 && i%7!=0) ||( i%7==0 && i%6!=0)) {


                println(i);
于 2016-09-11T05:34:52.280 に答える