在switch-case块内创建变量

时间:2014-05-13 19:56:50

标签: java variables switch-statement

我最近在写一些代码时遇到了这个问题。

我正在通过LAN编写战舰游戏,客户端和服务器发送Message类对象。 我阅读邮件的开关如下所示:

    switch (cm.getType()) {
        case Message.HIT:
            String[] partHit = cm.getMessage().split(" ");
            int x = Integer.parseInt(partHit[0]);
            int y = Integer.parseInt(partHit[1]);
            int whoShot = cm.getID();
            if(whoShot == myID){
            display("HIT: " + (char) (x + 64) + y);}
            break;
        case Message.MISS:
            String[] partMiss = cm.getMessage().split(" ");  // ...
            int x2 = Integer.parseInt(partMiss[0]);  // ...
            int y2 = Integer.parseInt(partMiss[1]);  // those are renamed already
            int whoShot = cm.getID();  // this shows error
            if(whoShot == myID){
            display("MISS: " + (char) (x2 + 64) + y2);
            break;
        }

    }

它做了什么,是它提取射击坐标,如果我射击它的人表明我击中/错过了,如果是另一个射击我的球员,那么没有任何事情发生。(

我的问题是: 为什么我需要重命名第二个whoShotpartHitxy变量?难道它们不是分开的,因为它们位于不同的代码块中吗?

我在考虑这个问题:如果在case : Message.HIT之前从未使用过case : Message.MISS,那么这些变量不应该被创建,并且在尝试为它们赋值时应该抛出异常。我在这里缺少什么?

0 个答案:

没有答案