当前位置: 首页 > 知识库问答 >
问题:

数组/数据集构造函数问题

昌勇锐
2023-03-14

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

>

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

    还要编写一个默认构造函数,该构造函数创建一个能够处理100个项目的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
    
  • 共有3个答案

    蔚宏大
    2023-03-14

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

    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
    
     }
    }
    
    程振濂
    2023-03-14

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

    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);
    }
    
    宗乐池
    2023-03-14

    声明数组的语法是< code > 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
    
     类似资料:
    • JavaScript 中的构造函数和其它语言中的构造函数是不同的。 通过 new 关键字方式调用的函数都被认为是构造函数。 在构造函数内部 - 也就是被调用的函数内 - this 指向新创建的对象 Object。 这个新创建的对象的 prototype 被指向到构造函数的 prototype。 如果被调用的函数没有显式的 return 表达式,则隐式的会返回 this 对象 - 也就是新创建的对象

    • 我一直不明白为什么我们能够从其他类调用一个类的构造函数。构造函数是一种方法,通常当试图从类中调用方法时,我们必须要么使该方法静态,这样我们就可以以 但是在构造函数的情况下,我们两者都不做。Java如何调用类的构造函数而不执行这些方法中的任何一个?我知道一个类的构造函数必须对你调用它的类可见,也就是说,如果你调用的类构造函数在不同的包中,你必须导入那个包。 那么,Java如何处理调用构造函数,而不必

    • 本文向大家介绍php构造函数与析构函数,包括了php构造函数与析构函数的使用技巧和注意事项,需要的朋友参考一下 php构造函数是对象创建完成后,第一个自动调用的方法,析构函数是当对象被释放之前最后一个自动调用的方法。本文章向大家介绍php构造函数与析构函数。 php构造函数 1.是对象创建完成后,“第一个”“自动调用”的方法 2.构造方法的定义,方法名是一个固定的, 在php4中:和类名相同的方法

    • C++ 类 & 对象 类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。 下面的实例有助于更好地理解构造函数的概念:#include <iostream> using namespace std; class Line { public: v

    • 主要内容:默认拷贝构造函数拷贝和复制是一个意思,对应的英文单词都是 。 对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的图片拷贝到桌面以方便浏览,将重要的文件上传到百度网盘以防止丢失等,都是「创建一份新数据」的意思。 在 C++ 中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已经存在的对

    • 我使用的是jdk8,需要创建一个以类名作为构造函数参数的Spring组件。但是,使用我当前的代码,我遇到了运行时错误: 这是我的博客类: 这就是我尝试创建类的方式: 我可以了解一下创建该组件的正确方法/这里出了什么问题吗?提前感谢。