Java 带有静态整数的Switch语句错误
为什么我在下面的开关状态中出现“}”错误。我没有看到任何语法错误。 我没有在编译代码时出错。Eclipse在下面指定的位置指示错误 在放置}之后,我得到了这个错误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
- 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;