无法将值从一个类传递到另一个类

时间:2020-10-31 17:20:47

标签: java class

我有一些应该以类形式出现的Java代码,将输入作为数字,获取输入数字的平均值,总和和计数,除了实际尝试时,它似乎在大多数情况下都有效从main方法输入值。如何调整此值,以便程序能够接受这些值?

public class AverageCalculator {
    private int sumOfNumbers ;
    private int countOfNumbers ;

    AverageCalculator() { // no arg constructor
        sumOfNumbers = 0;
        countOfNumbers = 0;
    }

    void add(int newNum) { // adds a number to the average calculator
        this.sumOfNumbers = newNum + sumOfNumbers;
        countOfNumbers++;
    }

    int getSum() { // returns the sum of all the numbers added to average calculator

        return sumOfNumbers;
    }

    int getCount() {// returns the number of numbers added to the average calculator
        return countOfNumbers;
    }

    double getAverage() {// returns the average of all numbers added to average calculator
        double average = this.sumOfNumbers / this.countOfNumbers;
        return average;
    }
}

class AverageCalculatorMain {
    public static void main(String[] args) {
        AverageCalculator average = new AverageCalculator(4); //with one value
        AverageCalculator average = new AverageCalculator(3,4,5)//with three values
        System.out.println("The average is " + average.getAverage() + " the sum is " + average.getSum()
                + " the count of numbers is " + average.getCount());
    }
}

1 个答案:

答案 0 :(得分:2)

您尚未使用参数定义构造函数。

假定您仅将传递类型int作为参数的示例构造函数:

    AverageCalculator(int... args) {
        for(int i:args){
            sumOfNumbers+=i;
            countOfNumbers++;
        }
    }

此外,在no-arg构造函数中使用这两行是多余的:

sumOfNumbers = 0;
countOfNumbers = 0;

只需在定义变量时对其进行初始化。

在上述修复程序之后检查代码:

public class AverageCalculator {
    private int sumOfNumbers=0;
    private int countOfNumbers=0;

    AverageCalculator() { // no arg constructor
    }

    AverageCalculator(int... args) {
        for(int i:args){
            sumOfNumbers+=i;
            countOfNumbers++;
        }
    }

    void add(int newNum) { // adds a number to the average calculator
        this.sumOfNumbers = newNum + sumOfNumbers;
        countOfNumbers++;
    }

    int getSum() { // returns the sum of all the numbers added to average calculator

        return sumOfNumbers;
    }

    int getCount() {// returns the number of numbers added to the average calculator
        return countOfNumbers;
    }

    double getAverage() {// returns the average of all numbers added to average calculator
        double average = this.sumOfNumbers / this.countOfNumbers;
        return average;
    }
}

class AverageCalculatorMain {
    public static void main(String[] args) {
        AverageCalculator average = new AverageCalculator(4); //with one value
        System.out.println("The average is " + average.getAverage() + " the sum is " + average.getSum()
                + " the count of numbers is " + average.getCount());
        AverageCalculator average2 = new AverageCalculator(3, 4, 5);//with three values
        System.out.println("The average is " + average2.getAverage() + " the sum is " + average2.getSum()
                + " the count of numbers is " + average2.getCount());
    }
}