0

http://pastebin.com/w8KntkE6#

package javaapplication9;

import java.text.DecimalFormat;
import java.util.Scanner;

public class JavaApplication9 {
    public static void main(String[] args) {
        // TODO code application logic here
        {
            int sum = 0, num, count = 0;
            double average;

            Scanner scan = new Scanner(System.in);

            System.out.print("Enter an integer (0 to quit): ");
            num = scan.nextInt();

            while (num >= 0) // sentinel num of 0 to terminate loop
            {
                if (num % 2 == 0) {
                    count++;
                    sum += num;
                    System.out.println("The sum so far is " + sum);

                    System.out.print("Enter an integer (0 to quit): ");
                    num = scan.nextInt();
                } else if (num % 2 != 0) {
                    continue;
                }

                System.out.println();

                if (count == 0) {
                    System.out.println("No nums were entered.");
                } else {
                    average = (double)sum / count;

                    DecimalFormat fmt = new DecimalFormat("0.###");
                    System.out.println("The average is " + fmt.format(average));
                }
            }

        }
    }
}

コードが実行され、偶数が合計されます。ただし、奇数が入るとエラーを返すか壊れます。奇数を無視してほしい。コードの何が問題になっていますか?

4

5 に答える 5

2

私は何かを見逃していますか、それともnextInt()あなたが奇数を持っているときにあなたが見逃していますか? 以来、もしあなたが持っていればnum = scan.nextInt();。num が奇数のときはしません。変化する

else if (num % 2 != 0){
    continue;
}

else if (num % 2 !=0){
    num = scan.nextInt();
    continue;
}
于 2012-09-20T06:31:54.273 に答える
2

continue変更せずに奇数をループしますnum-私には無限ループする必要があるようです。

于 2012-09-20T06:28:46.787 に答える
0

continue ステートメントの直前に、次のコードを追加します。正しく動作することを願っています。

System.out.print("Enter an integer (0 to quit): ");
            num = scan.nextInt();
于 2012-09-20T06:42:37.650 に答える
0

への変更:

package javaapplication9;


import java.text.DecimalFormat;
import java.util.Scanner;

public class JavaApplication9 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
    {
        int sum = 0, num, count = 0;
        double average;

        Scanner scan = new Scanner(System.in);

        System.out.print("Enter an integer (0 to quit): ");
        num = scan.nextInt();

        while (num >= 0) // sentinel num of 0 to terminate loop
        {
            if (num % 2 == 0)
            {
                count++;

                sum += num;
                System.out.println("The sum so far is " + sum);

                System.out.print("Enter an integer (0 to quit): ");
                num = scan.nextInt();            

               if (count == 0) {
                 System.out.println("No nums were entered.");
               } else {
                 average = (double) sum / count;
                 DecimalFormat fmt = new DecimalFormat("0.###");
                 System.out.println("The average is " + fmt.format(average));
               }
          }              
          num = scan.nextInt();               
      }
}
于 2012-09-20T06:36:57.453 に答える
0

これを試して。いつ平均を出力するのかよくわかりません。最後に出力したい場合は、 while ループの外に移動できます。

public static void main(String[] args) {
    // TODO code application logic here
    {
        int sum = 0, num, count = 0;
        double average;

        Scanner scan = new Scanner(System.in);

        System.out.print("Enter an integer (0 to quit): ");

        while ((num = scan.nextInt())> 0) // sentinel num of 0 to terminate loop
        {
            if (num % 2 == 0){
                count++;

                sum += num;
                System.out.println("The sum so far is " + sum);
                if (count == 0) {
                    System.out.println("No nums were entered.");
                } else {
                    average = (double) sum / count;

                    DecimalFormat fmt = new DecimalFormat("0.###");
                    System.out.println("The average is " + fmt.format(average));
                }
            }

            System.out.print("Enter an integer (0 to quit): ");

        }
        System.out.println("end");
    }
}
于 2012-09-20T06:56:52.333 に答える