有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中使用scanner类来平均数字的最大值

我正在使用scanner类将数字平均化。我正在使用一种方法进行平均。如果参数超过20个,我不希望程序运行。我好像没法让它工作。我对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) 个答案

  1. # 1 楼答案

    args != null检查是不必要的。实现所需功能的一种方法是接受数字while扫描仪有一个下一个数字(scanner.hasNext()也许)和break如果到目前为止输入的数量少于20。由于双倍数字的数量未知,因此最好使用ArrayList

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

    并在doubles上调用add方法

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

  2. # 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,将数组中的值相加并除以(双倍)

  3. # 3 楼答案

    下面是一个解决方案(也清理了大量代码),它可以在程序开始后将所有数字放在一行上:

    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,因为您使用空检查,所以您希望像这样运行程序:

    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;
        }
    
    }