Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有静态整数的Switch语句错误_Java_Static_Switch Statement - Fatal编程技术网

Java 带有静态整数的Switch语句错误

Java 带有静态整数的Switch语句错误,java,static,switch-statement,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()) { c

为什么我在下面的开关状态中出现“}”错误。我没有看到任何语法错误。 我没有在编译代码时出错。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
   }

关于

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

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
,…

错误
静态字段KeyEvent.VK_XXXX应该以静态方式访问
意味着:您应该静态访问字段,如下所示:

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

要解决任何编译问题:

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

如果这不起作用,我怀疑您的程序的其他部分可能存在错误,可能是您没有正确数量的匹配大括号。一个简单的grep应该可以帮助您识别问题。尝试grep“{”| wc-l和grep“}”| wc-l

要解决运行时问题的根本原因:


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

只需重复Rohit的注释,确切的错误是什么?你可以发布stacktrace本身。@Bhesh:这很好,但与错误无关。我在编译时没有遇到错误,月食在我看到的地方显示十字符号indicated@SurenderThakran:这就是为什么我提到这不是compiletime/runtime错误。@Alfred:那么您可能只需要保存并快速生成。发布错误文本,这可能是一个更好的主意!
case KeyEvent.VK_BACK_SLASH:
    // Do something
    break;
case KeyEvent.VK_RIGHT:
    // Do something else
    break;