我正在用eclipse上的Java编写一个垄断类游戏。 我目前正在研究一种方法,该方法允许玩家在自己的方块中循环并选择要开发的方块。
for (int loop2 = 0; loop2 < currentPlayer.getOwnedSquares().size(); loop2++) {
count++;
System.out.println("Would you like to develop this property " + count + ". "
+ currentPlayer.getOwnedSquares().get(loop2).getName() + " (y/n)");
propertyChoice = scanner.nextLine();
if (propertyChoice.equalsIgnoreCase("Y")) {
break;
}else if (propertyChoice.equalsIgnoreCase("N")) {
continue;
}
}
System.out.println("Please choose a development option");
System.out.println("1.Buy a start-up");
System.out.println("2.Buy a global corporation");
int option = scanner.nextInt();
我无法使循环一次仅显示一个拥有的方块,因此玩家可以选择y / n选择要为其开发的方块。如果玩家选择“ N”,则循环将在数组中显示下一个拥有的属性,玩家将做出另一个决定,依此类推。 如果玩家选择“ Y”,则循环将中断并继续为所选拥有的广场开发选项。
任何有关如何实现这一目标的建议将不胜感激。
答案 0 :(得分:0)
您必须将针对用户输入的检查移出循环,因此算法应如下所示:
向用户(循环外)询问他要开发的正方形。例如,用户可以简单地提供您可以通过
获得的正方形的位置编号currentPlayer.getOwnedSquares().get(Integer.valueOf(userInput));
答案 1 :(得分:0)
我刚刚修改了代码进行测试,并且它可以根据需要工作。我认为您还有其他未解决的问题。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int count=0;
String propertyChoice;
Scanner scanner = new Scanner(System.in);
for (int loop2 = 0; loop2 < 5; loop2++) {
count++;
System.out.println("Would you like to develop this property " + count
+ " (y/n)");
propertyChoice = scanner.nextLine();
if (propertyChoice.equalsIgnoreCase("Y")) {
break;
}else if (propertyChoice.equalsIgnoreCase("N")) {
continue;
}
}
System.out.println("Please choose a development option");
System.out.println("1.Buy a start-up");
System.out.println("2.Buy a global corporation");
}
}
输出:
Would you like to develop this property 1 (y/n)
n
Would you like to develop this property 2 (y/n)
n
Would you like to develop this property 3 (y/n)
y
Please choose a development option
1.Buy a start-up
2.Buy a global corporation
Process finished with exit code 0
答案 2 :(得分:-1)
尝试将scanner.nextLine();
放在propertyChoice = scanner.nextLine();
之前
编辑:如果不起作用,请注意else
的第二个if
块周围没有括号。我不知道这是否行得通,因为我看不到您要引用的类,也不能说存在错误。您显示的代码似乎没有其他问题。