1

ユーザーの情報を取得し、最小、最大、平均、合計を出力し、その中に含まれる値の数をカウントするプログラムを作成しています。100 項目のデフォルト コンストラクターと、ユーザーが定義する配列サイズを作成する方法を理解するのに本当に苦労しています。

  • 新しい DataSet オブジェクトを作成します。オブジェクトを作成するクライアントは、セットに追加できるアイテムの最大数を指定します。(1 つの 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クラスでは、要件を満たすために両方のコンストラクターを定義する必要があります。さらに、データセットに追加された数値を格納するためのコレクションタイプ(つまり、intの配列)を作成する必要があります(これは要件の一部のようです)。以下のコードでは、メインメソッドで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

 }
}

于 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;

次に、2 つのコンストラクターが必要になります。

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 に答える