0

(入力ボックスを使用して) 3 つの数字を読み取るプログラムを作成する必要があり、その値に応じて、次のいずれかのメッセージを書き込む必要があります。

  • 3 つの数字すべてが奇数である OR
  • 3 つの数字はすべて偶数または
  • 2 つの数字が奇数で 1 つが偶数 OR
  • 1 が奇数、2 が偶数

これは私がこれまでに持っているものです:

import javax.swing.JOptionPane;
class program3

{
    public static void main(String[] args)

    {

        String num1 = JOptionPane.showInputDialog("Enter first number.");
        String num2 = JOptionPane.showInputDialog("Enter second number.");
        String num3 = JOptionPane.showInputDialog("Enter third number.");

        boolean newnum1 = Integer.parseInt(num1);
        boolean newnum2 = Integer.parseInt(num2);
        boolean newnum3 = Integer.parseInt(num3);
    }

}

これは私が立ち往生しているところです。MOD を使用してメッセージを表示する方法がわかりません。IFステートメントも使用する必要があると思います...しかし、よくわかりません。

助けてください!:D

4

8 に答える 8

11

Java では、剰余演算子は%です。次のように使用できます。

if ( (a % 2) == 0) {
    System.out.println("a is even");
}
else {
    System.out.println("a is odd");
}

それを if ステートメントまたはカウンターと組み合わせて、最終結果を実装します。

PS: newnumX の型は奇妙に見えます:)

于 2009-10-30T23:45:52.730 に答える
5

することをお勧めします

  • 手動で行う方法を紙に書き始めます。( アルゴリズムを書く )

  • 次に、どの部分が「プログラム可能」で、どの部分がそうでないかを識別します (変数、ステートメントなどを識別します)。

  • さまざまな数値を手で試して、機能するかどうかを確認してください。

  • そこから、それらの考えを実際のコードに変換するお手伝いをします (これは簡単な部分です)。

これらは、マスターしなければならない基本的なプログラミング スキルです。

ただ答える価値はありません:

 boolean areAllEven = ( one % 2 == 0 ) &&  ( two % 2 == 0 ) && ( three % 2 ==  0 ) ;
 boolean areAllOdd  = ( one % 2 != ..... etc etc 

私たちはあなたを助けることになるからです。

関連エントリ:問題からコードに渡すプロセス。どのように学びましたか?

于 2009-10-30T23:57:52.397 に答える
1

入れ子になった大きく醜い IF を避けるために、(疑似コードで) 小さなカウンターを宣言します。

if newnum1 mod 2 == 1 then oddcount += 1;
etc...

switch oddcount
    case 0:
        print "All three numbers are even"
    etc...
于 2009-10-30T23:47:05.660 に答える
1

Java で演算子を使用することを選択した場合の警告%: 左側のオペランドが負の場合、負の数が返されます。(言語仕様を参照してください) つまり(-5) % 2、結果は -1 になります。

偶数/奇数をテストするために、「x & 1」などのビット演算を検討することをお勧めします。

于 2009-10-31T00:29:03.623 に答える
0

私はアルファゼロに同意しません。2 つの変数が必要だとは思いません。すべての数は、すべてまたは奇数です。したがって、カウントを 1 つ維持するだけで十分です。

Asaph のコードについては、十分に文書化されていると思いますが、それでも説明が必要な場合は、次のようになります。

これは for ループが行うことです:

3 つの数値のユーザー入力を (文字列として) 読み取ります。この
Integer.parseInt関数はString、パラメーターとして を受け取り (例: '4')、 を返しますint(この例では4)。次に、この整数を 2 で mod して偶数かどうかをチェックします。基本的な考え方は次のとおりa%bですa/ba%2a は偶数です)。(テストevenCountに基づいて)偶数の整数の数を追跡するカウンター( と呼ばれる)があります。%s

次に、 で switch ステートメントを実行しevenCountます。switch ステートメントは、if-else ステートメントのようなものです。evenCountこれが機能する方法は、大文字と小文字の値 (この場合は 3、2、1、0) に対してスイッチ パラメーター (この場合は ) をテストすることです。テストが True を返した場合、case ブロック内のコードが実行されます。その case ブロックの最後に break ステートメントがない場合は、次の case ブロックのコードも実行されます。

ここで、Asaph は、evenCount を 0、1、2、および 3 と比較して偶数の数をチェックし、適切な print ステートメントを使用して偶数の数をユーザーに伝えます。

お役に立てれば

于 2009-10-31T01:23:39.660 に答える
0

タスクを実行するために必要な基本的な手順を書き留めてから、コードで実装してみてください。

これがあなたがしなければならないことです:

1 - ユーザーから 3 つの番号を取得します。

2 - 奇数入力の数を保持する変数と、偶数入力の数を保持する変数の 2 つの変数が必要です。これらをevenCntとoddCntと呼びましょう。(ヒント: 数字は 3 つしかないことがわかっているので、そのうちの 1 つを決定すると、もう 1 つの数字は 3 との差にすぎません)

3 - 次に、一連のテストが必要です (evenCnt が 3 の場合は「3 つの偶数」を表示し、それ以外の場合は ....)

(そして、パスカルとクロッシュは、ステップ 2 と 3 を埋めるために必要な断片をほとんど与えてくれました。)

[編集: 私の #2 は頭が毛むくじゃらです。必要な変数は 1 つだけです。]

于 2009-10-30T23:49:01.287 に答える
0

どうぞ。これでいくつかのテストケースをコンパイルして実行し、動作することを確認しました。

import javax.swing.JOptionPane;

class Program3 {
    public static void main(String[] args) {
        int evenCount = 0;

        for (int i=0; i<3; i++) {
            // get the input from the user as a String
            String stringInput = JOptionPane.showInputDialog("Enter number " + (i+1) + ".");

            // convert the string to an integer so we can check if it's even
            int num = Integer.parseInt(stringInput);

            // The number is considered even if after dividing by 2 the remainder is zero
            if (num % 2 == 0) {
                evenCount++;
            }
        }

        switch (evenCount) {
            case 3:
                System.out.println("All are even");
                break;
            case 2:
                System.out.println("Two are even, one is odd");
                break;
            case 1:
                System.out.println("One is even, two are odd");
                break;
            case 0:
                System.out.println("All are odd");
                break;
        }
    }
}

ところで: クラス名を大文字にしたのは、Java で大文字にするのがベスト プラクティスだからです。

于 2009-10-30T23:50:52.330 に答える
0

それよりもさらに単純で、ツリー番号a、b、cがあります

n = a%2 + b%2 +c%2
switch (n):
 case 0: 'three are even'
 case 1: 'one is odd'
 case 2: 'one is even'
 case 3: 'three are odd'

そして出来上がり!

于 2009-10-31T00:38:10.640 に答える