1

我正在创建一个程序,它获取用户的信息并输出最小值、最大值、平均值、总和,并计算其中有多少值。我真的很难弄清楚如何创建 100 个项目的默认构造函数以及用户应该定义的数组大小。

  • 创建一个新的数据集对象。创建对象的客户端指定可以添加到集合中的最大项目数。(用一个 int 参数编写一个构造函数。)

  • 还要编写一个默认构造函数,它创建一个能够处理 100 个项目的 DataSet。

  • 将整数数据项添加到 DataSet。如果已将最大数量的项目添加到集合中,则简单地忽略该项目。

这是我的代码

    import javax.swing.*;
    import java.util.*;
    public class DataSet {

        private int count; // Number of numbers that have been entered.
        private double sum; // The sum of all the items that have been entered.
        private double min;
        private double max;

        //Adds numbers to dataset.    
            public void addDatum(double num) {
            count++;
            sum += num;
            if (count == 1){
            min = num;
            max = num;
        } else if (num < min){
            min = num;
        } else if (num > max){
            max = num;
        }
    }

    public boolean isEmpty() 
    {
        if(count == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    //Return number of items entered into the dataset.     
    public int getCount() {
        return count;
    }

    //Return the sum of all the numbers that have been entered.   
    public double getSum() {
        return sum;
    }

    //Return the average of all the numbers that have been entered.       
    public double getAvg() {
        return sum / count;
    }

    //return Maximum value of data entered.
    public double getMax(){
        return max;
    }

    //return Minimum value of data entered.
    public double getMin(){
        return min;
    }

    public static void main (String[] args){

        Scanner scanner = new Scanner(System.in);
        DataSet calc = new DataSet();
        double nextnumber = 0;

        while (true){
            System.out.print("Enter the next number(0 to exit): ");
            nextnumber = scanner.nextDouble();
            if (nextnumber == 0)
                break;
            calc.addDatum(nextnumber);
        }

        System.out.println("Min = "+calc.getMin());
        System.out.println("Max = "+calc.getMax());
        System.out.println("Mean = "+calc.getAvg());       
        System.out.println("Count = "+calc.getCount());
        System.out.println("Sum = "+calc.getSum());
    }

} //end class DataSet
4

3 回答 3

0

您上面的代码不包含任何构造函数,因此只有默认的 DataSet() 构造函数可用。在您的 DataSet 类中,您需要定义这两个构造函数以满足您的要求。此外,您将需要创建一个集合类型(即整数数组)来存储添加到数据集的数字(这似乎是您的要求的一部分)。使用下面的代码,当您在 main 方法中创建 DataSet 类的实例时,您可以通过说

DataSet myDataSet = new DataSet();

或者您可以使用用户指定数量的元素创建它,例如

DataSet myDataSet = new DataSet(30); //for thirty elements in the array

public class DataSet {

 int[] myArray;
 public DataSet() //Zero parameters constructor
 {
   //initialize your array to 100 elements here
   myArray = new int[100];  //the array can hold 100 elements
 }

 public DataSet(int max) //One parameter constructor
 {
  //initialize your array to 'max' elements here
  myArray = new int[max]; //the array can hold max number of elements
 }

 public void AddNum(int num)
 {
   //logic to add number to the array here :P

 }
}

于 2012-12-14T22:01:26.407 回答
0

声明数组的语法是type[] name;(有变体,但这是最常见的)

所以一个 int 数组被声明为:

int[] someIntegers;

可以通过多种方式创建新数组。正常的方法是创建一个空数组,其中所有元素都初始化为其默认值(原始数据类型为零或 false,对象数组为 null)。语法是:

someIntegers = new int[4]; // ie. [0, 0, 0, 0] 
// or
int n = ...; // intitalise n some how
someIntegers = new int[n]; 
// this way we can get different length arrays at runtime
于 2012-12-14T21:40:31.597 回答
0

您必须添加一个变量来保存最大数量的数字。

int max = 0;

然后你需要两个构造函数:

Dataset() {
    max = 100;
}

Dataset(int max) {
    this.max = max;
}

然后当你得到输入时,你必须在做任何事情之前检查你是否达到了数量限制。

System.out.print("Enter the next number(0 to exit): ");
nextnumber = scanner.nextDouble();
if (count < max) {
    if (nextnumber == 0) {
        break;
    }
    calc.addDatum(nextnumber);
}
于 2012-12-14T21:43:16.507 回答