Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得五种颜色输入的序列。颜色应该只有红色,绿色和蓝色需要一个颜色模式。用Java编程?_Java - Fatal编程技术网

如何获得五种颜色输入的序列。颜色应该只有红色,绿色和蓝色需要一个颜色模式。用Java编程?

如何获得五种颜色输入的序列。颜色应该只有红色,绿色和蓝色需要一个颜色模式。用Java编程?,java,Java,我需要额外的颜色循环吗?如何?最大的问题是一位设计师正试图用三种颜色创造一种五条条纹的新图案。下表中提到了这些颜色及其代码。颜色字符代码红色R绿色G蓝色B设计师必须记住,没有两个相邻的条纹是相同的颜色。例如,RRGBR是无效的模式,但RGBRB是有效的。编写一个程序,接受设计师输入的五种颜色序列来形成图案。在设计师做出的每个选择中,程序都应该检查输入是否来自可用的颜色集。此外,程序应检查相邻颜色是否不相同。最后,程序应显示创建的最终条纹图案 public class Colors {

我需要额外的颜色循环吗?如何?最大的问题是一位设计师正试图用三种颜色创造一种五条条纹的新图案。下表中提到了这些颜色及其代码。颜色字符代码红色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();
    }
}
公共类颜色{
公共静态void main(字符串[]args){
扫描仪scannerObject=新扫描仪(System.in);
System.out.println(“输入您的输入”);
字符串颜色;
int计数器=0;
做{
color=scannerObject.next();
System.out.println(“您的选择是:“+颜色”);
计数器++;
}而(计数器<5);
scannerObject.close();
}
}
  • 您可以使用一个数组(例如下面给出的代码中的
    desiredCombination[]
    )来存储有效输入
  • 您可以有一个
    列表
    (例如,下面给出的代码中的
    列表允许的颜色
    )或一组允许的颜色,您需要使用这些颜色来验证输入的颜色
  • 按如下方式操作:

    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));
        }
    }
    

    一个重要提示:切勿关闭
    系统的
    扫描仪
    。在
    中,它也将关闭
    系统。在
    中,您将无法再次打开它。

    您的代码显示您如何读取颜色作为输入,但您没有代码来运行任何检查。请在问题中包含有关如何运行相邻颜色检查的代码/尝试。当您确定不再需要System.in扫描仪时,可以在应用程序结束时关闭该扫描仪。任何Java应用程序都应该只定义一个System.in扫描仪。谢谢@GilbertLeBlanc的反馈。应用程序可能有多个类,因此在一个或多个类中关闭
    系统的
    扫描仪总是容易出错。JDBC对象或文件的
    扫描器
    ,或可能具有较大内存占用的任何此类对象的设计方式应确保它们在使用后关闭,并在需要时再次打开。
    系统的
    扫描器
    对象在
    中的内存占用可以忽略不计,应该留给JVM关闭。但是,如果应用程序只有一个类,则在
    中关闭
    系统的
    扫描仪
    是安全的。
    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]