0

ユーザー入力で平均を計算するプログラムを書いています。

import java.util.Scanner;
public class mean
{   
    static Scanner input = new Scanner (System.in);
    public static void main (String[] args)
    {
    double i;
    double sum = 0;
    int count = 0;
    do
    {
        System.out.println("input");
        i = input.nextDouble();
        sum = sum + i;
        count++;
    }while (i != 0);
    System.out.println("sum is " + sum + " count is " + (count - 1));
    System.out.println("average is " + sum / (count - 1));
}
}

ここで0を入力すると、計算されます。ただし、リストに0がある場合。誰かが私に素晴らしい状態を案内してくれますか?

4

2 に答える 2

2

スキャナーが読み取っている次のトークンが double であるかどうかをスキャナーに問い合わせ、そうでない場合はブレークすることができます。以下の例:

import java.util.Scanner;
public class mean
{   
    static Scanner input = new Scanner (System.in);
    public static void main (String[] args)
    {
    double i;
    double sum = 0;
    int count = 0;
    while(input.hasNextDouble())
    {
        System.out.println("input");
        i = input.nextDouble();
        sum = sum + i;
        count++;
    }
    System.out.println("sum is " + sum + " count is " + (count));
    System.out.println("average is " + sum / (count));
}
}

ユーザーが数字以外の文字 (たとえば、'+'、'-'、0-9、'.' など) を入力すると、input.hasNextDouble()が false を返すため、ループが中断されます。

于 2012-06-04T20:08:19.613 に答える