使用静态整数切换语句错误

时间:2012-11-17 07:06:32

标签: java static switch-statement

为什么我在下面的切换声明中出现“}”错误。我没有看到任何语法错误。 我编译代码时没有错误。 Eclipse在下面的指定位置指示错误。

投放后}我收到此错误

- The static field KeyEvent.VK_XXXX should be accessed in a 
 static way
- case expressions must be constant expressions

switch(event.getKeyCode())
        {
        case event.VK_BACK_SLASH:
            backColor=but[27].getBackground();
            break;

        case event.VK_RIGHT:
            for(int i=0;i<but.length;i++)
            {
                if(" > ".equals(but[i].getText()))
                {
                    backColor=but[i].getBackground();
                    break;
                }
            }
            break; // error here
   }

当我按下键时,我得到了以下错误

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: 
Syntax error, insert "}" to complete SwitchBlock

    at Keyboard$HandlerClass.keyPressed(Keyboard.java:242) // this is break statement


    at java.awt.Component.processKeyEvent(Unknown Source)
    at javax.swing.JComponent.processKeyEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)

此致

3 个答案:

答案 0 :(得分:1)

我在代码中可以看到的唯一问题是以下(但它不是编译时/运行时错误),这很可能最终会成为一个错误:

but[i].getText() == " > " //this is called object identity check

这不是比较字符串的正确方法。请改用.equals方法

" > ".equals(but[i].getText()) //this is object equality check

<强>更新

  

应以静态方式访问静态字段KeyEvent.VK_XXXX

这意味着您应该将event.VK_BACK_SLASH更改为KeyEvent.VK_BACK_SLASH,...

答案 1 :(得分:1)

解决任何编译问题:

首先使用类名来引用静态内容而不是对象引用。含义,在case语句中使用KeyEvent.VK_BACK_SLASH而不是event.VK_BACK_SLASH

如果这样做不成功,我怀疑你的程序的其他部分有错误可能是你没有正确数量的匹配括号。一个简单的grep应该可以帮助您识别问题。试试grep&#34; {&#34; | wc -l和grep&#34;}&#34; | wc -l。

导致运行时出现问题:

尝试在eclipse范围之外运行它。通过将根目录添加到类路径或将类文件打包到jar文件中。

答案 2 :(得分:0)

错误The static field KeyEvent.VK_XXXX should be accessed in a static way表示它的含义:您应该静态访问字段,如下所示:

case KeyEvent.VK_BACK_SLASH:
    // Do something
    break;
case KeyEvent.VK_RIGHT:
    // Do something else
    break;