【问题标题】:**Solved** Answer consists out of certain characters**已解决**答案由某些字符组成
【发布时间】:2020-05-12 09:13:27
【问题描述】:
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】:

试试这个:

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

【讨论】:

  • 如果guess = "GRB" 那么valid 将是false。 (注意排列。)我知道这也是必需的。
【解决方案2】:

我犯了一个愚蠢的错误。

代码用对了,只是忽略了一些简单的事情

guess.matches("[RGBPOY]+") 是手册,工作代码。
字符串Colors 刚刚打印了RGBPOY。
意思是我错过了一些事情来让它发挥作用。 通过这样做

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

或者这个

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

代码就像手动输入一样工作,因为两者都是 [RGBPOY]+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多