使用scanner类来平均java中的数字

时间:2014-02-06 01:39:43

标签: java max args

我正在使用扫描仪类来平均数字。我正在使用一种方法来进行平均。如果有超过20个args,我不希望程序运行。我似乎无法让这个工作。我是java的新手并且正在努力学习。

我感谢任何帮助。谢谢!

import java.util.Scanner;

class programTwo {


    public static void main (String[] args) {

        Scanner scan = new Scanner(System.in);
        double x = 0.00d;

        if (args != null) {
            System.out.println ("Enter your numbers to be averaged. Remember no more than 20!:");
            x = scan.nextInt();

            if (x <= 21) {
                System.out.println("Please do not add more than 20 numbers");   
            }  
       } else {
       }

    }

    public double average(double [] values) {
        double average = 0.0;
        if ((values != null) && (values.length > 0)) {
            for (double value : values) {
                average += value;
            }
        average /= values.length; 
        }
        return average;
    }

}

3 个答案:

答案 0 :(得分:2)

只需运行一个while循环,该循环在满足20“args”时或在输入-1之类的中断时中断。然后,如果您正在使用双值,则应使用x = scan.nextDouble()。您也没有将值插入数组的位置。在while循环结束时,您可以将x放入双精度数组中。

private double x;
private double Foo[] = new Foo[20];
private int this = 0; //Your counter

while(this < 20 && x != -1)
{
   x = scan.nextDouble();
   Foo[this++] = x;

}

然后通过将数组中的值相加并除以(双)此

来执行public double Average

答案 1 :(得分:1)

这是一个解决方案(清理大量代码),在程序启动后将所有数字放在一行:

import java.util.Scanner;

class programTwo {


    public static void main (String[] args) {

        Scanner scan = new Scanner(System.in);
        double values[] = new double[20];
        int count = 0;
        System.out.println ("Enter your numbers to be averaged. Remember no more than 20!:");
        String inputs = scan.nextLine();
        scan = new Scanner(inputs); // create a new scanner out of our single line of input
        while(scan.hasNextDouble())
        {
            if(count == 20)
            {
                System.out.println("You entered too many numbers! Fail.");
                return;
            }
            values[count] = scan.nextDouble();
            count += 1;
        }

        System.out.println("Your average is: " + average(values, count));
    }

    public static double average(double [] values, int count) {
        double average = 0.0;
        for (double value : values) {
            average += value;
        }
        average /= count;

        return average;
    }

}

我认为你可能想要使用传递给main的args,因为你使用了null检查,所以你想要运行你的程序:

java programTwo num1 num2 num3 num4 num5

等。如果是这种情况,我们有另一种解决方案:

class programTwo {


    public static void main (String[] args) {
        if(args.length > 20)
        {
            System.out.println("You entered too many numbers! Fail.");
            return;
        }
        double values[] = new double[args.length];
        for(int i=0; i< args.length; ++i)
            values[i] = Double.valueOf(args[i]);

        System.out.println("Your average is: " + average(values));
    }

    public static double average(double [] values) {
        double average = 0.0;
        for (double value : values) {
            average += value;
        }
        average /= values.length;

        return average;
    }

}

答案 2 :(得分:0)

args != null检查是不必要的。实现目标的一种方法是接受数字while如果到目前为止输入的数量小于20,则扫描器具有下一个数字(可能是scanner.hasNext())和break。双数的数量是未知的,你最好使用ArrayList。

List<Double> doubles = new ArrayList<Double>();

并在doubles

上调用add方法

doubles.add(x); 然后将其传递给一个平均arraylist值的方法。