2012-04-03 65 views
3

我编码时,我跑我的创建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_letteris_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中编写代码,至今还没有发现任何缺失的“}”。我不知道这是否与我编写测试的方式或我声明变量的方式有关。有谁知道我为什么有这些语法错误?

+1

你不错过关闭'}',是吗?你只是没有将它粘贴到代码片段中,对吧? – dasblinkenlight 2012-04-03 02:43:20

+2

与你的问题没有直接关系,但是你需要写if(a.equals(“^”)来代替'if(a ==“^”| a ==“_”| a ==“=” )|| a.equals(“_”)|| a.equals(“=”))'',或者更好一些'if(a.matches(“^ [_ = ^] $”))' – dasblinkenlight 2012-04-03 02:47:37

+0

没有关闭大括号在那里!我只是没有发布到代码片段中。也是的,你是绝对正确的:“==”应该是.equals或我应该使用.matches(正则表达式)。 – tkrishnan 2012-04-03 04:26:53

回答

1

我在编写Android应用时遇到了这个错误。我所有的括号都关闭了;我正在关注来自其他网站的示例。我最终选择了我的代码的全部文本,剪切,保存并粘贴代码。错误消失了。 Eclipse很可能卡住了...

3

您刚刚发布的枚举类型和类都有两个大括号({),并且只有一个右大括号(})。如果我不得不猜测,我会说你需要在每个文件的末尾添加一个大括号。

+0

对不起,大括号在那里!我只是没有发布整个枚举/离开他们的代码片段。我很抱歉! – tkrishnan 2012-04-03 04:27:27

+1

@tkrishnan:这些错误可能是由您未包含的其他文件所导致的。也许你应该尝试发布整个代码文件? (如果代码文件太大而无法在这里发布,请尝试从代码文件中删除代码,直到您的代码文件的最小值仍然会重现您的错误为止。如果您最终以这种方式消除错误,那至少应该帮助您找出问题是)。 – StriplingWarrior 2012-04-03 04:33:47

0

我在Eclipse中遇到了同样的问题。错误的语法错误消息是由于错位“;”经过注释。