0

新しいセクションを設定するときは、カウンターを追跡する必要があります。たとえば、m1 が Brass で、setSection(Strings); を使用するとします。Brass-- と Strings++ が必要ですが、if ステートメントでそれを行う方法がわかりません。また、getSection()toString() で元のセクションが取得されるかどうかもわかりません。

/**This function sets a musician's Orchestra Section. 
 @param section  is a SymphonySection indicating the musician's Orchestra Section.*/

 public void setSection(SymphonySection section) {
    this.section = section;

    if (getSection().toString().equals( "Strings" )){
        Strings--;
    }
    else if (getSection().toString().equals( "Brass" )){
        Brass--;
    }
    else if (getSection().toString().equals( "Conductor" )){
        Conductor--;
    }
    else if (getSection().toString().equals( "Percussion" )){
        Percussion--;
    }
    else if (getSection().toString().equals( "WoodWinds" )){
        WoodWinds--;
    }

    if (section.toString().equals( "Strings" )){
        Strings++;
    }
    else if (section.toString().equals( "Brass" )){
        Brass ++;
    }
    else if (section.toString().equals( "Conductor" )){
        Conductor ++;
    }
    else if (section.toString().equals( "Percussion" )){
        Percussion ++;
    }
    else if (section.toString().equals( "WoodWinds" )){
        WoodWinds ++;
    }

}
4

3 に答える 3

2
  1. あなたのSymphonySectionクラスtoStringには、セクション名を返すメソッドがありますか? そうでない場合は、Brass、Strings などのセクション名を返すようにこれを実装する必要があります。クラスに実装する方法をここで確認してください。SymphonySection
  2. switch (Java 7 の時点で Strings をサポート) ステートメントを使用して物事を少し整理するか、Peter Lawrey が提案するマップを使用することをお勧めします。
  3. コードを読みやすくするために、こちらの Java 命名規則も参照してください。Strings上記の場合、Brass、 などは型の変数であると推測しSymphonySectionているため、最初の文字は小文字にする必要があります。たとえばstringsbrassなどWoodWindswoodWinds、従来のキャメルケースコーディングスタイルに従います。

お役に立てれば。

ヘイデン

于 2012-09-28T09:10:51.253 に答える
1

各セクションにカウントのマップを使用します。

private final Map<SymphonySection, Integer> count = new HashMap<>();
public void setSection(SymphonySection section) {
    if(section == this.section) return;

    count.put(this.section, count.get(this.section)-1);
    Integer prevCount = count.get(section)
    count.put(section, prevCount == null ? 1 : (prevCount+1));

    this.section = section;
}
于 2012-09-28T08:13:25.260 に答える
0

-をお持ちJava 7で、基本をおさえたい方は をご利用くださいswitch

-String Java 7のサポートswitch cases

于 2012-09-28T08:48:59.880 に答える