2

プログラミング入門クラスの宿題に取り組んでいます。質問の 1 つは

13 で割り切れない 1 から 1000 までのすべての整数を表示するプログラムを作成してください (ヒント: 式 x % 13 ! = 0 が真の場合、x は 13 で割り切れません。% は剰余演算子であることを思い出してください。 ) 私の考えでは、プログラムに実行させたいのは、x が何であれ、x が 1000 未満の場合は 13 で割り、余りが 0 でない場合はその数値を表示することです。余り0 の場合は、数字を表示しません。

私の最初の試みは次のとおりでした。

public class Ch4_Lab_5 
{
    public static void main(String[] args)
    {
        int x = 1;

    while (x < 1000)
        {
            System.out.println(x);  
            x++;
        }
    }
}

しかし、実行すると、1から999までの数字が出力されるだけです。おそらくこれはif/elseステートメントである必要があると思いますが、「else」パラメーターがどうなるかはわかりません。

私の本はこれを例として挙げています:

public class Ch4_Example 
{
    public static void main(String[] args)
    {
        int x = 1;

        while (x*x < 5000)
            {
            System.out.println(x + " squared = " + x*x);
            x++;
            }
     }
}

そしてもちろん、それは完璧に機能しました。

私が書いているはずのプログラムは、本に書かれている例とまったく同じではありませんが、原理は同じで、しばらくこれをいじっていて、問題を特定できないようです。

これは非常に単純な質問であり、答えはさらに単純であると確信していますが、私はプログラミングの初心者であり、少し迷っています。

何か案は?

4

2 に答える 2

3

あなたのプログラムに欠けているのは、「その数は 13 で割り切れないか」というチェックです。

ステートメントを書くときif、対応するブロックにあるものは何でも、かっこの間の式が真の場合にのみ実行されることに注意してください。そのため、while ループifにステートメントを記述し、13 で割り切れない場合にのみ数値を出力します。次のようにします。

while (x <= 1000) // notice the <= operator
{
    if (/*change this multiline comment for an expression
        that checks wheter x is not divisible by 13*/) {
        System.out.println(x);
    }
    x++; // Increment x whether it is divisible or not.
}

私はそこに実際の式を書きますが、その後、あなたの宿題に答えます。この論理を理解して、自分で宿題に答えて、知識を内面化できるようにしてください。これがあなたにとって役立つかもしれません。

于 2013-09-19T22:08:03.537 に答える
-2

public class Ch4_Lab_5 { public static void main(String[] args) { int x = 1;

while (x < 1000)
    {
        System.out.println(x);  
        System.out.println(x+1);  
        System.out.println(x+2);  
        System.out.println(x+3);  
        System.out.println(x+4);  
        System.out.println(x+5);  
        System.out.println(x+6);  
        System.out.println(x+7);  
        System.out.println(x+8);  
        System.out.println(x+9);  
        System.out.println(x+10);  
        System.out.println(x+11);  
        x+=13;
    }
}

}

しかし、これを 1000 番台で停止させるには、まだ微調整が必​​要です。

于 2013-09-19T22:11:41.950 に答える