我编码时,我跑我的创建JUnit测试它,它会弹出下面的语法错误枚举类型:语法错误:插入“枚举标识符”,插入“EnumBody”小图“}”
java.lang.Error: Unresolved compilation problems:
Syntax error, insert "enum Identifier" to complete EnumHeaderName
Syntax error, insert "EnumBody" to complete EnumDeclaration
Syntax error, insert "}" to complete ClassBody
我的枚举类型具有静态函数,对于特定的字符串,返回一个枚举常量。下面是我的一些枚举类型的代码:
public enum MusicType {
ACCIDENTAL, LETTER, OCTAVE, REST, DUR, CHORD, TUPLET;
public static MusicType is_accidental(String a){
if (a=="^" | a=="_"|a=="=")
return ACCIDENTAL;
else return null;
}
}
我的静态函数的功能是非常相似的(即is_letter
,is_octave
等),但也有一些使用input.matches(regex)
函数,而不是检查,看看是否输入它等于一个特定的字符串。
下面是JUnit测试,其测试处理意外常数函数的开头:
public class MusicTypeTest {
@Test
public void accidentalTest(){
String sharp = "^";
String flat = "_";
String natural = "=";
assertEquals(MusicType.ACCIDENTAL, MusicType.is_accidental(sharp));
assertEquals(MusicType.ACCIDENTAL, MusicType.is_accidental(flat));
assertEquals(MusicType.ACCIDENTAL, MusicType.is_accidental(natural));
}
}
在我的JUnit测试的其它功能测试所有的枚举的静态功能类似编码。我无法弄清楚为什么我有这些语法错误(这是我第一次编码枚举类型)。我一直在Eclipse中编写代码,至今还没有发现任何缺失的“}”。我不知道这是否与我编写测试的方式或我声明变量的方式有关。有谁知道我为什么有这些语法错误?
你不错过关闭'}',是吗?你只是没有将它粘贴到代码片段中,对吧? – dasblinkenlight 2012-04-03 02:43:20
与你的问题没有直接关系,但是你需要写if(a.equals(“^”)来代替'if(a ==“^”| a ==“_”| a ==“=” )|| a.equals(“_”)|| a.equals(“=”))'',或者更好一些'if(a.matches(“^ [_ = ^] $”))' – dasblinkenlight 2012-04-03 02:47:37
没有关闭大括号在那里!我只是没有发布到代码片段中。也是的,你是绝对正确的:“==”应该是.equals或我应该使用.matches(正则表达式)。 – tkrishnan 2012-04-03 04:26:53