Java 用单独的方法对数组求平均值

Java 用单独的方法对数组求平均值,java,Java,我的原始代码是: import javax.swing.JOptionPane; public class average { public static void main(String[] args) { String str1; String str2; String str3; int numbersToAverage; str1 = JOptionPane.showInp

我的原始代码是:

import javax.swing.JOptionPane;

public class average {

    public static void main(String[] args) {        
        String str1;
        String str2;
        String str3;
        int    numbersToAverage;

        str1 = JOptionPane.showInputDialog("Please enter the amount of numbers you would like to average: ");
        numbersToAverage = Integer.parseInt(str1);

        // while statement will provide error message so user cannot enter 0
        while (numbersToAverage < 1) {
            str3 = JOptionPane.showInputDialog("Invalid entry: Please enter one or more numbers to average: ");
            numbersToAverage = Integer.parseInt(str3);
        }

        // array size is set to equal user input
        double[] numbers = new double[numbersToAverage];
        double sum = 0;

        for (int i = 0; i < numbersToAverage; i++) {
            str2       = JOptionPane.showInputDialog("Enter number " + (i + 1)
            numbers[i] = Double.parseDouble(str2);

            // the sum equals numbers in the array added together
            sum += numbers[i];
        }

        // Calculates the average of the numbers entered by the user
        double average = sum / numbersToAverage;

        // Prints in a dialogue box to user the average
        JOptionPane.showMessageDialog(null, "The average of the numbers you entered is: " + average);
    }
}
import javax.swing.JOptionPane;
公共课平均分{
公共静态void main(字符串[]args){
字符串str1;
字符串str2;
字符串str3;
平均整数;
str1=JOptionPane.showInputDialog(“请输入要平均的数字量:”);
numbersToAverage=Integer.parseInt(str1);
//while语句将提供错误消息,因此用户无法输入0
while(平均数<1){
str3=JOptionPane.showInputDialog(“无效条目:请输入一个或多个要求平均值的数字:”);
numbersToAverage=Integer.parseInt(str3);
}
//数组大小设置为等于用户输入
double[]数字=新的double[numbers ToAverage];
双和=0;
for(int i=0;i
我现在必须用另一种方法计算平均值,我很难弄清楚如何计算平均值?到目前为止,我有:

import javax.swing.JOptionPane;

public class average {
    public static void main(String[] args) {
        String str1;
        String str2;
        String str3;
        int numbersToAverage;

        str1 = JOptionPane
            .showInputDialog("Please enter the amount of numbers you would like to average: ");
        numbersToAverage = Integer.parseInt(str1);

        // while statement will provide error message so user cannot enter 0
        while (numbersToAverage < 1) {
            str3 = JOptionPane
                .showInputDialog("Invalid entry: Please enter one or more numbers to average: ");
            numbersToAverage = Integer.parseInt(str3);
        }

        // array size is set to equal user input
        double[] numbers = new double[numbersToAverage];

        //double sum = 0;
        for (int i = 0; i < numbersToAverage; i++) {
            str2       = JOptionPane.showInputDialog("Enter number " + (i + 1)
            numbers[i] = Double.parseDouble(str2);
            JOptionPane.showMessageDialog(null, "The average of the numbers you entered is: " );
        }
    }

    public static double average(double[] array){
        double sum; 

        sum += array[i];
        double average = sum / array.length;

        return average;
    }
}
import javax.swing.JOptionPane;
公共课平均分{
公共静态void main(字符串[]args){
字符串str1;
字符串str2;
字符串str3;
平均整数;
str1=JOptionPane
.showInputDialog(“请输入要平均的数字量:”);
numbersToAverage=Integer.parseInt(str1);
//while语句将提供错误消息,因此用户无法输入0
while(平均数<1){
str3=作业窗格
.showInputDialog(“无效输入:请输入一个或多个平均值:”);
numbersToAverage=Integer.parseInt(str3);
}
//数组大小设置为等于用户输入
double[]数字=新的double[numbers ToAverage];
//双和=0;
for(int i=0;i

我很难弄清楚如何在main方法中调用它,以及如何获得正确的计算。这样做的最佳方法是什么?我需要在average方法中使用for循环,还是应该将其保留在main中?

是的,您需要一个循环,尝试这样做:

public static double average(double[] array) {

    if(array.length == 0) {
        return 0;
    }

    double sum = 0;

    for (int i = 0; i < array.length; i++) {
        sum += array[i];
    }

    double average = sum / array.length;
    return average;
}
公共静态双平均(双[]数组){
如果(array.length==0){
返回0;
}
双和=0;
for(int i=0;i
只需执行以下操作:

StatUtils.mean(array);

您可以在Java 8中找到关于
StatUtils

的更多信息,您可以使用流:

final double avg = array.length > 0 ? DoubleStream.of(array).sum() / array.length : 0;
或在自己的功能中:

public static double average(final double[] array) {
    return array.length > 0 ? DoubleStream.of(array).sum() / array.length : 0;
}

无法平均0个数字。这只是确保程序运行时没有输入错误的一种方法。主方法中的for循环也是正确的吗?如果给定数组的大小为0,这将导致错误。我想,我在主方法中设置了它,以防止这种情况发生。@user3455588,对不起,我没有理解你的意思?@ifLoop我编辑了我的答案,你知道吗我需要任何愚蠢的错误来否决投票!!