Проблемы с циклом Java ArrayList - PullRequest
0 голосов
/ 05 марта 2019

Я программирую монополистическую игру с Java на Eclipse. В настоящее время я работаю над методом, который позволяет игрокам проходить по своим квадратам и выбирать, какой из них развивать.

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 голосов
/ 05 марта 2019

Попробуйте поставить scanner.nextLine(); непосредственно перед propertyChoice = scanner.nextLine();

Редактировать: если это не сработает, обратите внимание, что у else нет скобок, окружающих второй блок if. Я не знаю, будет ли это работать, потому что я не вижу классов, на которые вы ссылаетесь, и не могу сказать, что есть ошибка. Код, который вы показали, похоже, не имеет другой проблемы.

0 голосов
/ 05 марта 2019

Я только что изменил код для тестирования, и он работает, как вы хотите.Я думаю, что есть еще кое-что проблемное, чем вы не поделились.

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
0 голосов
/ 05 марта 2019

Вы должны убрать проверку для пользовательского ввода из цикла, чтобы алгоритм выглядел так:

  1. Печать всех принадлежащих квадратов в цикле.
  2. Спросите пользователя (вне цикла), какой квадрат он хочет развить.Например, пользователь может просто указать позиционный номер квадрата, который вы можете получить по

    currentPlayer.getOwnedSquares().get(Integer.valueOf(userInput)); 
    
  3. Делайте все, что вам нужно, с выбранным квадратом.
...