使用循环,开关和大小写的编译器错误

时间:2014-01-09 14:03:53

标签: java animation compiler-errors switch-statement case

我为我的一些程序设置了动画,它是一个移动的人,它的工作原理和一切。我有很多重复的代码,所以我想尝试让它更有效并循环重复。我的问题是,即使使用适当数量的括号,它也会给我几乎所有下面的错误

      public void DrawAstronaut(Graphics2D g2d) {
    if (nViewDX == -1) {
        DrawAstronautLeft(g2d);
    } else if (nViewDX == 1) {
        DrawAstronautRight(g2d);
    } else {
        DrawAstronautStand(g2d);
    }
}

public void DrawAstronautLeft(Graphics2D g2d) {
    switch (nAstroAnimPos) {
    for(int i = 1; i <= 6; i++){
        case i:
            g2d.drawImage(arimgAstroWalkLeft[i], nAstronautX + 1, nAstronautY + 1, this);
            break;
        default:
            g2d.drawImage(imgAstroStandLeft, nAstronautX + 1, nAstronautY + 1, this);
            break;
        }
}
}
    public void DrawAstronautRight(Graphics2D g2d) {
    switch (nAstroAnimPos) {
        for(int i = 1; i <= 6; i++){
        case i:
            g2d.drawImage(arimgAstroWalkRight[i], nAstronautX + 1, nAstronautY + 1,                                               this);
            break;
        default:
            g2d.drawImage(imgAstroStandRight, nAstronautX + 1, nAstronautY + 1, this);
            break;
        }
    }
}

public void DrawAstronautStand(Graphics2D g2d) {
    switch (nAstroAnimPos) {
        default:
            g2d.drawImage(imgAstroStandLeft, nAstronautX, nAstronautY, this);
            break;
}
}

当我向DrawAstronautLeft添加for循环时,下面的所有内容都有错误,它甚至不喜欢公共的无效DrawAstronautRight,即使它们应该没有任何问题。我知道我有合适数量的括号,但有人可以帮助把东西放在正确的地方吗?

错误包括: 无法找到符号 “案例,默认或”}“预期” “class,interface或enum expected”

1 个答案:

答案 0 :(得分:1)

您不需要切换。你可以用 -

修改你的循环
for(int i = 0; i <= nAstroAnimPos; i++){
    if(i == 0) // Start with stand position
        g2d.drawImage(imgAstroStandLeft, nAstronautX + 1, nAstronautY + 1, this);
    else // Run the sequence from 1 to 6
        g2d.drawImage(arimgAstroWalkLeft[i], nAstronautX + 1, nAstronautY + 1, this);    
}

如果你想以立场位置结束 -

for(int i = 0; i <= nAstroAnimPos + 1; i++){
    if(i == 0 || i == nAstroAnimPos + 1) // Start and end with stand position
        g2d.drawImage(imgAstroStandLeft, nAstronautX + 1, nAstronautY + 1, this);
    else // Run the sequence from 1 to 6
        g2d.drawImage(arimgAstroWalkLeft[i], nAstronautX + 1, nAstronautY + 1, this);    
}