【问题标题】:How to make my method accept x number of parameters [duplicate]如何让我的方法接受 x 个参数 [重复]
【发布时间】:2016-10-12 19:02:31
【问题描述】:

我可能面临一个非常简单的困境。我正在尝试创建一个程序来计算输入到计算器的所有数字的平均值、总和和计数。这样做的问题是我只能接受一个或三个输入(取决于我的方法参数中列出的变量数量)。如何让我的 add() 方法实际接受 n 个输入而不是预定义的集合?

主类

public class Calculator 
{
    public static void main (String [] args)
    {
        AverageCalculator calculation1 = new AverageCalculator();
        AverageCalculator calculation2 = new AverageCalculator();

        calculation1.add(13);
        System.out.println("Sum: " + calculation1.getSum());
        System.out.println("Count: " + calculation1.getCount());
        System.out.println("Average: " + calculation1.getAverage());

        System.out.println();

        calculation2.add(3, 7, 12); // Error due to method parameters
        System.out.println("Sum: " + calculation2.getSum());
        System.out.println("Count: " + calculation2.getCount());
        System.out.println("Average: " + calculation2.getAverage());
    }
}

编译时出现错误:

Calculator.java:28: error: method add in class AverageCalculator cannot be applied to given types;
        calc2.add(3, 7, 12);

然后我会遇到如何处理我的 add() 方法的功能。我知道它必须做什么,我确信我必须添加一个 for 循环。但是,它没有给定的解析长度。我有我的i = 0; i < calculation 2; i++ 吗? 参见这部分的 cmets

中学班

public class AverageCalculator 
{
    private int sum;
    private int count;

    public AverageCalculator () {}

    public void add (int newNum) // One input due to single parameter
    {
        // How to accept the multiple input from main class with this mutator
        // and successfully manipulate data in this method
        sum += newNum;
        count++;
    }
    public int getSum()
    { return sum; }

    public int getCount()
    { return count; }

    public double getAverage()
    { return (double) sum / count; }
}

【问题讨论】:

标签: java class math methods parameters


【解决方案1】:

Java 支持这一点。被称为“可变参数”。如果您将“...”添加到您的类型,您可以根据需要重复多次(包括 0 次),然后在您的函数中将其作为数组处理。这可能是这样的(这段代码完全未经测试):

public void add(int... newNums) {
    for (int num : newNums) {
        sum += num;
        count++;
    }
}

您可以阅读更多here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-28
    • 2012-10-22
    • 2012-05-28
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    相关资源
    最近更新 更多