我最近在写一些代码时遇到了这个问题。
我正在通过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;
}
}
它做了什么,是它提取射击坐标,如果我射击它的人表明我击中/错过了,如果是另一个射击我的球员,那么没有任何事情发生。(
我的问题是:
为什么我需要重命名第二个whoShot
,partHit
,x
和y
变量?难道它们不是分开的,因为它们位于不同的代码块中吗?
我在考虑这个问题:如果在case : Message.HIT
之前从未使用过case : Message.MISS
,那么这些变量不应该被创建,并且在尝试为它们赋值时应该抛出异常。我在这里缺少什么?