【问题标题】:JAVA - Throw exception on default caseJAVA - 在默认情况下抛出异常
【发布时间】:2016-02-26 14:42:26
【问题描述】:

当我点击WASD 时,我的元素应该会朝某个方向移动。

我使用 switch case 语句来处理它。

但是,如果用户点击其他键怎么办?我将无法获得新职位。

我可以在默认情况下抛出一些异常并在之后执行try {...} catch {...} 吗?

下面是我的代码:

private boolean checkPos(String c) {
    int newPosX, newPosY;

    switch(c.toUpperCase().charAt(0)){
    case 'W':
        newPosX = oldPosX + 1;
        break;
    case 'A':
        newPosY = oldPosY() - 1;
        break;
    case 'S':
        newPosX = oldPosX() - 1;
        break;
    case 'D':
        newPosY = oldPosY() + 1;
        break;
    default:
        //throw exception???
        return false;
    }

    System.out.println("input:" + c.toUpperCase().charAt(0));
    System.out.println("OLD POSITION: (" + oldPosY() + ";" + oldPosX() + ")");
    System.out.println("NEW POSITION: (" + newPosY + ";" + newPosX + ")");
}

有人可以帮帮我吗?

【问题讨论】:

  • 你以前用过一个游戏来做这种导航,那些程序是做什么的?他们抛出异常了吗?
  • 你什么也做不了。这意味着按除 W、A、S 或 D 之外的任何其他键都不会调整位置。
  • 什么都不做怎么办?!

标签: java exception throw


【解决方案1】:

抛出异常似乎是一种非常糟糕的方法,因为它们很昂贵并且只应在需要时使用,而不是您应该设置默认情况以告诉用户他们的输入无效并循环返回以询问一个新的输入。

default: System.out.println("Invalid data");
requestPos(); // which i presume will bring you back to checkpos with more data
break;

可能不需要打印出无效部分,但根据您的游戏,通知用户可能会很好

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多