0

私のコードを見ていただきありがとうございます。私はJavaを学んでいますが、私を夢中にさせる問題に遭遇しました。

/*
 * The loop reads positive integers from standard input and that
 * terminates when it reads an integer that is not positive. After the loop
 * terminates, it prints out, separated by a space and on a single line, the
 * sum of all the even integers read and the sum of all the odd integers
 */

問題は、変数が追加されていないことです! 私は自分の構文が優れていることを知っています。ループがどのように機能して追加されるかについて、Java言語について理解できないことがあると思います。

import java.util.Scanner;

class Testing2 {
    public static void main(String[] args) {
        int sumP = 0;
        int sumO = 0;

        Scanner stdin = new Scanner(System.in);

        System.out.println("Enter a positive or negative integer: ");

        while ((stdin.nextInt()) >= 0) {
            if (stdin.nextInt() % 2 == 0)
                sumP += stdin.nextInt();
            else
                sumO += stdin.nextInt();
        }
        System.out.println(sumP + " " + sumO);
        stdin.close();

    }
};
4

7 に答える 7

3

stdin.nextInt() を呼び出すたびに、別の整数を探します。これを回避するには、上部で入力と等しい変数を設定します。

int myInt = stdin.nextInt();

if (myInt >= 0) {
 if (myInt % 2 == 0)
                sumP += myInt;
            else
                sumO += myInt;
        }
        System.out.println(sumP + " " + sumO);
        stdin.close();

    }
}

最後の中括弧の後にもセミコロンを付けません。複数の数字が入力されることが予想される場合は、次の数字を継続的にチェックできます。

while(stdin.hasNext()){
int myInt = stdin.nextInt();
}
于 2013-09-30T04:33:04.900 に答える
1

問題は、毎回 nextInt() を使用していることです。このように使用してください-

import java.util.Scanner;

class Testing2 {
    public static void main(String[] args) {
        int sumP = 0;
        int sumO = 0;

        Scanner stdin = new Scanner(System.in);

        System.out.println("Enter a positive or negative integer: ");
        int temp;
        while ((temp=stdin.nextInt())>0) {
            if (temp % 2 == 0)
                sumP += temp;
            else
                sumO += temp;
        }
        System.out.println(sumP + " " + sumO);
        stdin.close();

    }
}
于 2013-09-30T04:58:31.473 に答える
0

これらのコードを試してください

import java.util.Scanner;

class Testing2 {
    public static void main(String[] args) {
    int sumP = 0;
    int sumO = 0;
    int scn = 0;

    Scanner stdin = new Scanner(System.in);

    System.out.println("Enter a positive or negative integer: ");

    scn = stdin.nextInt();
   while (scn >= 0) {

       System.out.println("stdin next " + scn);
        if (scn % 2 == 0){
            sumP += scn;
        }else{
           sumO += scn;
        }
       scn--;
    }
    System.out.println(sumP + " " + sumO);


   }
};

stdin.nextInt() は減少せず、stdin の値のみを返すため、適切にループしません。

于 2013-09-30T05:53:46.897 に答える
0

u また、スキャナーを内部に配置する必要があります。

 do {
 Scanner stdin = new Scanner(System.in);
            if (stdin.nextInt() % 2 == 0)
                sumP += stdin.nextInt();
            else
                sumO += stdin.nextInt();
        }while ((stdin.nextInt()) >= 0)
于 2013-09-30T04:30:05.213 に答える
0
while ((stdin.nextInt()) >= 0) {
    if (stdin.nextInt() % 2 == 0)
       sumP += stdin.nextInt();
    else
       sumO += stdin.nextInt();
}

あなたの問題は、ループするたびに3つの数字を読んでいることです。読み取りの結果を保存してから、それをどうするかを決定します。それを破棄せずに、さらに 2 つの数値を読み取ります。

int nextInt;
while ((nextInt = stdin.nextInt()) >= 0) {
    // Do things with nextInt
}
于 2013-09-30T04:34:58.423 に答える