'Answer consists out of certain characters

Scanner input = new Scanner(System.in);
String[] colors = {"R", "G", "B", "P", "O", "Y"};
String guess = "";
String valid = false;


//Get Input
guess = input.nextLine().toUpperCase();

// Change String Array to Regular String
String Colors = "";
for(int i=0; i<colors.length; i++) {
    Colors += colors[i];
}

// See if Guess Consists out of Correct Letters
if(guess.matches(Colors)) {
    valid = true;
}

Basically what I want to achieve with this code is to check if the input given meets the requirements.
In this case does guess only consists of the letters given in colors, for example:

if guess = RGB then valid = true
if guess = RGBA then valid = false

I know I can also put it in manually like this:

if(guess.matches("[RGBPOY]+")) {
    valid = true;
}

But I want to keep it procedural.

Is there a way to get this working? Or am I better off using a different method like say a for loop?
I only recently started with JAVA and am not yet familiar with all the different approaches it has to offer.



Solution 1:[1]

try this:

valid = Arrays.asList(colors).contains(guess)

Solution 2:[2]

Stupid mistake on my part.

The code was in the right way, just overlooked some simple things

guess.matches("[RGBPOY]+") was the manual, working piece of code.
The string Colors just printed RGBPOY.
Meaning I missed a few things to get this to work. By either doing this

Colors = "[" + Colors + "]+";
if(guess.matches("Colors")) {
}

or this

if(guess.matches("["+stringArray+"]+")) {
        }

The code worked as if it was put in manually since both were [RGBPOY]+

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Federico klez Culloca
Solution 2 Bram Vrielink