我正在尝试创建一个非常简单的游戏,其中几个不同类型的玩家尝试猜测一个范围内的数字。我创建了一个函数来初始化玩家数组,并使用 switch-case 来完成它。
由于某种原因,如果我输入一个数字,即使数组中没有足够的单元格,它也会遍历它后面的所有情况。例如,当输入 2(HUMAN 类型的值)时,它也会执行 3 和 4 的情况,并创建 COMPUTER 和 GUMBLER 类型的玩家。
这是代码:
String name;
int count = 0;
System.out.println("How many players will participate?");
players = new Player[reader.nextByte()];
for (Player player: players)
{
count++;
System.out.print("\n1)Name of the player: ");
name = reader.next();
System.out.println("What will be its type? WRITE A NUMBER\n1- Monley\n2-Human\n3-Gumbler\n4-Computer");
switch (reader.nextInt())
{
case 1:
player = new Monkey (name, MAXIMUM, MINIMUM);
System.out.println("A moneky was created");
case 2:
player = new Human (name);
System.out.println("A human was created");
case 3:
player = new Gumbler (name, MAXIMUM, MINIMUM);
System.out.println("A gummbler was created");
case 4:
player = new Computer (name, MAXIMUM, MINIMUM);
System.out.println("A computer was created");
}
}
MAXIMUM
和MINIMUM
是需要猜测的数字的最小和最大数字。 Human
, Monkey
, Computer
和Gumbler
是扩展抽象类的类 Player
。 players
是玩家数组(类型为 Player
)。
最佳答案
用 break
结束每个 case block 。
关于java - switch 中的所有情况都会执行,而只有一种情况应该被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36678085/