【问题标题】:Java ArrayList loop issuesJava ArrayList 循环问题
【发布时间】:2019-07-26 22:16:32
【问题描述】:

我正在 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();

我无法让循​​环一次只显示一个拥有的方格,因此玩家可以选择是/否想要开发哪个方格。如果玩家选择“N”,则循环将呈现数组中的下一个拥有的属性,玩家将做出另一个决定,依此类推。 如果玩家要选择“Y”,那么循环将中断并继续选择所拥有方格的开发选项。

任何关于如何实现这一点的建议将不胜感激。

【问题讨论】:

  • 目前发生了什么?
  • 您遇到的具体问题是什么?对我来说似乎是一个很好的起点。
  • 一次显示所有拥有的属性,而不是一次显示一个,因此玩家无法循环选择选项
  • 我希望它在 loop2 显示第一个 owedproperty,然后根据 y/n 选择显示下一个。目前它一次打印出所有这些,我真的不知道为什么
  • 代码看起来不错!似乎无法理解您为什么会遇到这个问题。

标签: java loops for-loop arraylist


【解决方案1】:

尝试将scanner.nextLine(); 放在propertyChoice = scanner.nextLine(); 之前

编辑:如果这不起作用,请注意 else 在第二个 if 块周围没有括号。我不知道这是否可行,因为我看不到您所指的课程,也不能说有错误。您显示的代码似乎没有任何其他问题。

【讨论】:

  • 不知道else if
  • 我总是用括号括起来 if,所以不。
  • 在这种情况下,您可能也想查看else if。它非常基本。
【解决方案2】:

我刚刚修改了代码进行测试,它可以按您的意愿工作。我认为您还没有分享其他问题。

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

【讨论】:

  • 非常感谢您的帮助,我会进一步调查并尝试找出代码中还有什么可能导致问题的原因
【解决方案3】:

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

  1. 循环打印所有拥有的方格。
  2. 询问用户(在循环之外)他想要开发哪个方格。例如,用户可以简单地提供一个正方形的位置编号,您可以通过

    currentPlayer.getOwnedSquares().get(Integer.valueOf(userInput)); 
    
  3. 用选定的方块做任何你想做的事。

【讨论】:

    猜你喜欢
    • 2020-08-10
    • 2013-04-07
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多