Java ArrayList循环问题

时间:2019-03-05 12:33:43

标签: java loops for-loop arraylist

我正在用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”,则循环将中断并继续为所选拥有的广场开发选项。

任何有关如何实现这一目标的建议将不胜感激。

3 个答案:

答案 0 :(得分:0)

您必须将针对用户输入的检查移出循环,因此算法应如下所示:

  1. 循环打印所有拥有的正方形。
  2. 向用户(循环外)询问他要开发的正方形。例如,用户可以简单地提供您可以通过

    获得的正方形的位置编号
    currentPlayer.getOwnedSquares().get(Integer.valueOf(userInput)); 
    
  3. 使用选定的正方形做任何您需要的事情。

答案 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块周围没有括号。我不知道这是否行得通,因为我看不到您要引用的类,也不能说存在错误。您显示的代码似乎没有其他问题。