2017-08-11 15 views
-1

Iは、いくつかの小さなタスクで構成割り当て有する:Javaクラスの属性としての配列ですか?

  1. Iアレイをinitilizeと200/400/800値(各量 - 1回)でそれを充填する必要があります。
  2. 私は配列の値をとって、メソッドに変換される特定の条件で赤い黒のツリーに入れなければなりません。
  3. さらにいくつかのタスク。 handleArrayから

私は、メインクラスでそれをすべて行うことができますが、しかし、それは私が新しいクラスを開始したほうが良いでしょう私には思えます。

私は、次のようなクラスを起動する場合:

public class handlyArray{ 
    protected int [] arr = new int[]; 
} 

しかし、私はそれを行う場合、私は「取得」と配列の長さを取得する機能を「設定」書くべき?

問題は、私がこれを作ると "Array initilizer expected"というエラーが表示されることです。私はクラスを持っている

追加機能:

public void fillArray(handleArray arr, int k){ 
     Random rand=new Random(); 
     for (int i = 0; i <k ; i++) { 
      int value = rand.nextInt(1024); 
      arr[i]=value; 
     } 
    } 

- それを構築する方法については、任意の提案をredblackTreeのノードを作成し、ツリー

にそれらを挿入する機能? 属性を一切持たないクラスを作成できますか?

ありがとうございました!

+0

配列を初期化するときは、配列のサイズを指定する必要があります。 'new int [];'は無効です。これは 'new int [100];のようなものでなければならないか、明示的に値を指定しなければなりません:' new int [] {1,2,3,4}; '。配列のサイズは作成後は固定されています(配列のサイズ変更はできません)。 – Jesper

+0

私は理解しています。しかし、私は3つの異なるサイズが必要な場合、私は何をしますか? – Alan

+0

クラスのコンストラクタで配列を初期化し、長さをコンストラクタパラメータとして渡すことができます。 – khelwood

答えて

1

私はこれが宿題であることに注意していますので、私はあなたに概要を与えて、そのことをさせてください。

あなたは、あなたの新しいクラスのようなものゲッターとセッターを構築することができますはい:長さを取得するためとして

public int[] getArray() { 
    return arr; 
} 

public void setArray(int[] arr) { 
    this.arr = arr; // 
} 

をあなただけ呼び出すことができるよう、あなたはにそれのための方法を必要としませんゲッターの上に長さを尋ねる、例えば

int arrayLength = handlyArray.getArray().length; 

は最後にそう、あなたは罰金を行いますセッターに初期化された配列に渡した場合、例えば、最初にあなたのアレイを設定する必要があります

handlyArray.setArray(new int[] {200, 400, 800}); 

幸い、詳しい説明が必要な場合はお気軽にお問い合わせください。

+0

宿題です:-)私はそれを書いた - 課題。ご協力いただきありがとうございます! – Alan

+0

@Alan私はそれを単に認めていました。あなたが与えられた答えに同意するならば、あなたが受け入れるものに間違いがないかチェックしてください。 –

0

私はそうは思わない。私はどこかの静的メソッドの操作を行います。

public static int[] randomArray(int size){ 
    Random rand=new Random(); 
    int[] arr = new int[size]; 
    for (int i = 0; i < size ; i++) { 
     int value = rand.nextInt(1024); 
     arr[i]=value; 
    } 
    return arr; 
} 

さて、赤/黒のツリーのように、私はTreeSetのは、赤/黒の木を用いて実装されていることを信じています。

+0

あなたはメインの方法ですべてをやるでしょう、それはそれですか? – Alan

+1

@Alanランダム配列の初期化、はい、間違いありません。 –

1

あなたはこのようなメソッドの内部で配列をinisializeことができます。

public void fillArray(handlyArray arr, int k) { 
    Random rand = new Random(); 
    arr.arr = new int[k];//<<---------------------Initialize the array 
    for (int i = 0; i < k; i++) { 
     int value = rand.nextInt(1024); 
     arr.arr[i] = value;// Note to fill the array you have to use arr.arr not just arr 
    } 
} 

とhandlyArrayは次のようにする必要があります:

a.fillArray(new handlyArray(), length); 
:あなたが使用することができます fillArrayメソッドを使用する

public class handlyArray { 
    protected int[] arr;//<<---------------------Just declare the array 
} 

0

配列の長さを設定することはできません。配列の長さは、初期化中に設定する必要があります。

public class HandleArray { 

    protected int [] arr; 

    public HandleArray(int length) { 
    arr = new int[length]; 
    } 
} 
関連する問題