Как получить последовательность из пяти входов цветов. Цвет должен быть только красный, зеленый и синий. Нужен набор цветов. Программирование в Java? - PullRequest
0 голосов
/ 11 июля 2020

Нужен ли мне дополнительный l oop для цветов и как? Полная проблема: дизайнер пытается создать новый узор из пяти полос, используя три цвета. Эти цвета и их коды указаны в таблице ниже. Цвет Код символа Красный R Зеленый G Синий B Дизайнер должен учитывать, что никакие две соседние полосы не имеют одного цвета. Например, RRGBR - недопустимый шаблон, но допустимый RGBRB. Напишите программу, которая принимает последовательность из пяти цветов в качестве входных данных от дизайнера для формирования узора. При каждом выборе, который делает дизайнер, программа должна проверять, входит ли ввод из доступного набора цветов. Также программа должна проверить, что соседние цвета не совпадают. В конце программа должна отобразить окончательный созданный узор из полос.

public class Colors {

    public static void main(String[] args) {
        Scanner scannerObject = new Scanner(System.in);
        System.out.println("Enter your Input.");
        String color;
        int counter = 0;
        do {
            color = scannerObject.next();
            System.out.println("Your selection is :" + color);
            counter++;
        } while (counter < 5);

        scannerObject.close();
    }
}

1 Ответ

0 голосов
/ 11 июля 2020
  1. У вас может быть массив (например, desiredCombination[] в приведенном ниже коде) для хранения действительных входных данных.
  2. У вас может быть List (например, List<String> allowedColors в данном коде ниже) или массив допустимых цветов, с помощью которых необходимо проверить цвет ввода.

Сделайте это следующим образом:

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scannerObject = new Scanner(System.in);
        String color;
        int counter = 0;
        List<String> allowedColors = List.of("R", "G", "B");
        String[] desiredCombination = new String[5];
        do {
            System.out.print("Enter a color [R/G/B]: ");
            color = scannerObject.nextLine();

            // There is no element before desiredCombination[0] and therefore the colour for
            // desiredCombination[0] does not require comparing with the one before it.
            if (counter == 0 && allowedColors.contains(color.toUpperCase())) {
                desiredCombination[counter++] = color;
            } else if (allowedColors.contains(color.toUpperCase()) && !color.equals(desiredCombination[counter - 1])) {
                desiredCombination[counter++] = color;
            }
        } while (counter < 5);
        System.out.println("The desired combination is: " + Arrays.toString(desiredCombination));
    }
}

Пробный прогон:

Enter a color [R/G/B]: R
Enter a color [R/G/B]: R
Enter a color [R/G/B]: G
Enter a color [R/G/B]: B
Enter a color [R/G/B]: R
Enter a color [R/G/B]: R
Enter a color [R/G/B]: B
The desired combination is: [R, G, B, R, B]

Важное примечание: Никогда не закрывайте Scanner для System.in, так как он также закроет System.in, и у вас не будет возможности открыть его снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...