2016-08-16 7 views
0

これは、配列リストのコンストラクタを定義する方法です。コンストラクタの外部にある(コンストラクタで要素が定義されている)配列リストに追加するにはどうすればよいですか?

private static List<Quantity> getAbsoluteQuantities(List<Quantity> quantities) 
    { 
     List<Quantity> absoluteQuantities = new ArrayList<Quantity>(); 

float absoluteMagnitude; 
    // loop through quantities 
    for (Quantity quantity : quantities){ 
     Float magnitude = quantity.getMagnitude(); 
     String multiplier = quantity.getMultiplier(); 
     String unit = quantity.getUnit(); 
     UnitType type = quantity.getType(); 

     if (multiplier != null){ 
      float multiplierValue = populateMultiplierFromFile().get(multiplier); 
      //System.out.println(multiplierValue); 
      absoluteMagnitude = magnitude * multiplierValue; 
      } 
     else { 
      absoluteMagnitude = magnitude; 
     } 
      String strMagnitude = String.valueOf(absoluteMagnitude); 
      String strType = String.valueOf(type); 
      String originalMagnitude = String.valueOf(magnitude); 
     //The line below is where I get the error 
      absoluteQuantities.add(originalMagnitude, multiplier, strType, unit,strMagnitude); 

    } 
    return absoluteQuantities; 
} 

}

私はそれをどのように行うのです:

public Quantity(String strMagnitude, String multiplier, String unit, 
        String strType) 
{ 
     this.setMagnitude(strMagnitude); 
     this.multiplier = multiplier; 
     this.unit = unit; 
     this.setType(strType); 
    } 

今、私はこのリストに別の要素絶対値を追加したいですか?私は、(String、String、String、String、String)で指定されたフォーマットが(String、String、String、String)のとき、リストを定義することができないというエラーを受けています。

+2

問題を解決するために十分な情報が投稿にありません。自己完結型の小さな例を投稿することを検討してください。 – Kylar

+0

4つしか受け入れられない関数に5つの入力パラメータを入れたようです – printfmyname

+0

新しいArrayListではなく、新しいQuantityをやっていますか? –

答えて

1

変更行:

 absoluteQuantities.add(new Quantity(originalMagnitude, multiplier, strType, unit,strMagnitude)); 

  //The line below is where I get the error 
      absoluteQuantities.add(originalMagnitude, multiplier, strType, unit,strMagnitude); 

あなたが最初Quantityインスタンスを作成し、リスト

にそれを追加する必要がありますので、 List<Quantity>Quantityインスタンスを追加したいと

からの回答に基づく更新実際には、originalMagnitudemultiplierunitstrTypeの4つのパラメータしか取らないQuantityインスタンスにabsoluteMagnitudeを渡したいとします。

は、次の2つのステップの下に使用してこれを行うことができます。

  1. コンストラクタはオーバーロードされたコンストラクタを使用して連鎖します。ここでは、5つのパラメータを取るQuantityコスコンストラクタのオーバーロードを定義します。あなたが定義され、その他の公共数量(文字列strMagnitude、文字列の乗数、文字列単位、 文字列strType) { //がchaninedを呼び出すabsoluteMagnitude

    に取るオーバーロードされた1 - だからあなたのQuantityクラスには2つのコンストラクタを持っていますabsoluteMagnitudeのデフォルト値を持つコンストラクタ this(strMagnitude、multiplier、unit、strType、 "0.0"); }

    public Quantity(String strMagnitude, String multiplier, String unit, 
            String strType, String absoluteMagnitude) 
    { 
        //initialize class level variabes using the parameter values 
    } 
    
  2. 個人属性のgetter/setterペアを公開。したがってもabsoluteMagnitude属性

    パブリックストリングgetAbsoluteMagnitude(){ 戻りthis.absoluteMagnitudeための個々のペアが存在することになります。 }

    公共ボイドsetAbsoluteMagnitude(文字列絶対等級) {this.absoluteMagnitude =絶対等級。 }

今、あなたは、あなたが4つのパラメータに取るコンストラクタを呼び出すabsoluteMagnitude値を指定せずにQuantityインスタンスを作成したいとき。その後、セッターを使用してabsoluteMagnitudeの値を後で設定することができます。

ただし、absoluteMagnitudeの値を指定する場合は、5つのパラメータを取り込む別のオーバーロードされたバージョンのコンストラクタを使用します。

+0

@PrahladDeshpandeはそれをすでに試みました。このエラーが発生します:コンストラクタの数量(文字列、文字列、文字列、文字列、文字列)が定義されていません – serendipity

+0

@PrahladDeshpanseありがとうございます!これはまさに私が探していたものです! – serendipity

関連する問題