2016-05-05 1 views
1

私は多くの異なる計算を実行できる独自のVectorクラスを作成しています。しかし、私は障害に遭遇したようです。並べ替え、スカラーの追加/乗算、逆行の方法などいくつかの方法がありますが、最初にベクトルのコピーを作成して変更できるようにしたいと思います。 これは例としてだけでソート方法の私のコードです:上記のコードでさらなる変更のためにベクトルの配列のコピーを作成する方法

Vector vector = new Vector(length); 

    for (int i = 0; i < length - 1; i++) { 
     for (int j = i + 1; j < length; j++){ 
      if (vector.elements[i] > vector.elements[j]) { 
       long temp = vector.elements[i]; 
       vector.elements[i] = vector.elements[j]; 
       vector.elements[j] = temp; 
      } 
     } 
    } 
    return vector; 

、私はそれを実行するように見える時はいつでも、私は私がのクローンを作成する必要が知っているしかし、出力は常に0です。ユーザが入力したベクトルをVector "vector"オブジェクトに格納します。 どうすればいいですか?

インスタンス変数Iは、以下のとおりている:

public class Vector { 

private Long sum; 
private Long mode; 
private Long median; 
private Long minimum; 
private Long maximum; 

private final int length; 
private final long[] elements; 

public Vector(int length) { 

    this.sum = null; 
    this.mode = null; 
    this.median = null; 
    this.minimum = null; 
    this.maximum = null; 

    this.length = length; 
    this.elements = new long[length]; 
あなただけのコピーコンストラクタが必要

答えて

2

、すなわちVector(Vector other)

  • 割り当てthis.sum = other.sum;などを使用したスカラー場のすべてを。
  • 使用して配列フィールドを割り当てます。

    this.elements = Arrays.copyOf(other.elements, other.elements.length); 
    

(あなたがlengthフィールドを必要とする理由elements.length == lengthがいるのでそれは、はっきりしていない - ちょうどelements.lengthを使用)

+0

'' 'length'''がいるようですテンプレートの一部:[リンク](http://stackoverflow.com/questions/36954961/unsure-how-to-set-uniform-value-to-a-vector/36954985) –

+0

ありがとう、その答えはありがとう! –

関連する問題