设置新部分时,我需要跟踪计数器。 例如,如果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 ++;
}
}
答案 0 :(得分:2)
SymphonySection
类是否有toString
方法返回节名称?如果不是,您需要实现它,以便它返回节名称,例如黄铜,字符串等。点击此处how以在SymphonySection
类Strings
,Brass
等是SymphonySection
类型的变量,因此应该具有小写的第一个字符,例如strings
,brass
等WoodWinds
,将woodWinds
遵循传统的camelcase编码风格。希望这有帮助。
海登
答案 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
。