【发布时间】:2012-04-16 16:50:38
【问题描述】:
我编写了一个枚举类型,当我为它运行我创建的 JUnit 测试时会出现以下语法错误:
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 中编码,目前还没有发现任何丢失的“}”。我不知道这是否与我编写测试的方式或我声明变量的方式有关。有谁知道我为什么会出现这些语法错误?
【问题讨论】:
-
你不会错过一个结束
},是吗?您只是没有将其粘贴到代码片段中,对吧? -
与你的问题没有直接关系,但是你需要写
if (a.equals("^") || a.equals("_") || a.equals("="))而不是if (a=="^" | a=="_"|a=="="),或者更好的是if(a.matches("^[_=^]$")) -
没有右括号!我只是没有将其发布到代码片段中。也是的,你是绝对正确的:“==”应该是 .equals 或者我应该使用 .matches(regex)。
-
如果您需要帮助,您必须添加完整的代码。上面的源文件都可以。当我从您的 MusicType 枚举中删除“}”时,我收到了
Syntax error, insert "}" to complete EnumBody MusicType.java /StackOverflow/src line 10 Java Problem,请添加类似的错误消息(当您选择错误并按 CTRL + C 时,您可以从 Eclipse 问题视图中复制这些消息)。
标签: java eclipse enums junit syntax-error