设置方法和递增

时间:2012-09-28 08:09:24

标签: java

设置新部分时,我需要跟踪计数器。 例如,如果m1是黄铜,我使用setSection(字符串); 我想要它给Brass--和Strings ++ 但我不知道如果用法规如何做到这一点 我不确定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 ++;
    }

}

3 个答案:

答案 0 :(得分:2)

  1. 您的SymphonySection类是否有toString方法返回节名称?如果不是,您需要实现它,以便它返回节名称,例如黄铜,字符串等。点击此处how以在SymphonySection
  2. 中实施
  3. 我建议使用一个开关(从Java 7开始支持字符串)声明来对付东西,或者像Peter Lawrey建议的地图
  4. 请同时查看Java命名约定here,以使您的代码更具可读性。在上述情况下,我猜测StringsBrass等是SymphonySection类型的变量,因此应该具有小写的第一个字符,例如stringsbrassWoodWinds,将woodWinds遵循传统的camelcase编码风格。
  5. 希望这有帮助。

    海登

答案 1 :(得分: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;
}

答案 2 :(得分:0)

- 如果您有Java 7,并且想要了解基础知识,请使用switch

- String的Java 7支持switch cases