0

私はまだJavaにかなり慣れていないので、これには少し困惑しています。

これが私の問題です:

文字列を使用してオブジェクトを別のオブジェクトに渡す必要があります。getObjectつまり、文字列を関数 (この場合)に渡し、ArrayListその関数を使用してそれをユニット オブジェクトのと比較したいと考えていgetCodeます。

私がこれまでに持っているもの:

private Unit getUnitObject(String unit1Code) {
  for (int i = 0; i < units.size(); i++) {
    Unit currUnit = units.get(i);
    String unitCode = currUnit.getUnitCode();

    if (unit1Code == unitCode) {
      Unit selectedUnit = currUnit;
      return selectedUnit;
    } 
  }
}

それは私にエラーを与えます - 「このメソッドはユニット型の結果を返さなければなりません」 for ループの外に戻りを移動しようとしましたが、まだ成功しませんでしたか? このようにできますか?

4

4 に答える 4

4

問題は、一致が見つからない場合、何も返さないことです。これを試して:

private Unit getUnitObject(String unit1Code) {
    for (int i = 0; i < units.size(); i++) {
        Unit currUnit = units.get(i);
        String unitCode = currUnit.getUnitCode();

        if (unit1Code.equals(unitCode)) {
             return currUnit;
        } 
    }
    return null;
}

.equals()同様にString オブジェクトを比較していることに注意してください。null何も一致しない場合よりも、より良いものを返したい場合があります。

于 2013-10-17T15:02:51.510 に答える
0

この構成で、うまくいくことを願っています

 private Unit getUnitObject(String unit1Code) {
        Unit selectedUnit=null;
        for (int i = 0; i < units.size(); i++) {
            Unit currUnit = units.get(i);
            String unitCode = currUnit.getUnitCode();

             if (unit1Code.equals(unitCode)) {
              selectedUnit = currUnit;

            } 
        }
        return selectedUnit;
    }
于 2013-10-17T15:05:35.197 に答える
0
    private Unit getUnitObject(String unit1Code) {
    Unit selectedUnit = new Unit();
    for (int i = 0; i < units.size(); i++) {
    Unit currUnit = units.get(i);
    String unitCode = currUnit.getUnitCode();

     if (unit1Code.compareTo(unitCode)) {
      selectedUnit = currUnit;

        } 
      }
       return selectedUnit;
    }

uni1Code が UnitCode と等しいだけでなく、常に Unit オブジェクトを返す必要があります。したがって、メソッドの先頭で変数を作成し、if が true の場合は割り当てを行い、最後に戻ります。空の Unit または currentUnit を返します。

于 2013-10-17T15:04:43.650 に答える
0

問題は、if ステートメントが true の場合にのみ何かを返すことですが、false の場合にも何かを返す必要があることです。クラスに return-statement を 1 つだけ持つことは実用的です。最初に戻り型の変数を作成し (null または標準値でインスタンス化)、条件に基づいてこの変数を変更します。最後にその変数を返します。

  private Unit getUnitObject(String unit1Code) {
    Unit selectedUnit = null;
       for (int i = 0; i < units.size(); i++) {
       Unit currUnit = units.get(i);
       String unitCode = currUnit.getUnitCode();


        if (unit1Code == unitCode) {
          selectedUnit = currUnit;

           } 
         }
       return  selectedUnit;
       }
于 2013-10-17T15:02:50.363 に答える