**已解决**答案由某些字符组成。

问题描述 投票:0回答:1
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;
}

基本上,我想通过这段代码实现的是检查所给的输入是否符合要求。在这种情况下,是否 guess 只由下列字母组成 colors比如说。

如果 guess = RGB 然后 valid = true 如果 guess = RGBA 然后 valid = false

我知道我也可以像这样手动放进去。

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

但我想保持它的程序性

有什么方法可以让它工作?或者我最好使用不同的方法,比如说for循环?我最近才开始接触JAVA,还不熟悉它提供的所有不同方法。

java
1个回答
1
投票

试试这个。

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

0
投票

我犯了个愚蠢的错误。

代码的方式是正确的,只是忽略了一些简单的事情。

guess.matches("[RGBPOY]+") 是手册中的工作代码。字符串 Colors 刚打印出RGBPOY。意味着我错过了一些东西,让这个工作.通过这样做要么

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

或者这个

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

由于两者都是[RGBPOY]+,所以代码就像手动放进去的一样工作。

© www.soinside.com 2019 - 2024. All rights reserved.