0

そこで、1 から 100 までのどの数字が 3 と 7 で割り切れるかを調べたいと思います。数字の 1 つを除いて、うまくいきました。何らかの理由で、3 % 3 は剰余として 3 を与えていますが、6 % 3 は 0 を与えています。これが私のコードです:

     public class factors
     {
public static void main(System args[])
{
    //Variables
    int integer, remainder;

    //Displays header
    System.out.print("Integers less than 100 that are \nevenly divisible by 3 or 7");

    //Loops through each integer
    for (integer = 1; integer <= 100; integer++)
    {
        remainder = integer % 3; //determines if 3 is a factor

        if (remainder == 0) //displays integer 
        {
            System.out.println(integer + " is divisible by 3");
        }

        remainder = integer % 7; //determines if 7 is a factor

        if (remainder == 0) //displays integer
        {
            System.out.println(integer + " is divisible by 7");
        }
    }
}

}なぜこれが数字の 3 でうまくいかないのか誰か知っていますか?

4

4 に答える 4

6

あなたのコードは実際にやっています

remainder = 3 % 7; // equals 3.

コードが思ったように動作しない理由を判断する最善の方法は、デバッガーを使用してコードをステップ実行することです。

3 と 7 の倍数はすべて 21 の倍数、つまり 21、42、63、84 になります。

于 2013-10-31T20:00:21.777 に答える
1

あなたは出力していませんremainder- あなたは表示していintegerます。したがって、3それ印刷する必要があります3

ステートメントをより明確に出力します。

System.out.println(integer + " is divisible by 3"); //  for the first `if`
and
System.out.println(integer + " is divisible by 7"); // for the second `if`

これで混乱が解消されるはずです。

3 あなたのロジックは、または で割り切れる数を出力し7ます。

于 2013-10-31T20:06:21.397 に答える
1

まず、コードを次のように短縮できます。

 //and
 for (int i = 1; i <= 100; i++){
    if(i % 3 == 0 && i % 7 == 0) {
        System.out.println(i);
    }
 }

//or
 for (int i = 1; i <= 100; i++){
    if(i % 3 == 0 || i % 7 == 0) {
        System.out.println(i);
    }
 }

また、整数の剰余変数の型を宣言していないことにも注意してください。これらの問題を再現しようとはしませんでした。それを解決することから始めます。

于 2013-10-31T20:16:51.900 に答える