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,还不熟悉它提供的所有不同方法。
试试这个。
valid = Arrays.asList(colors).contains(guess)
我犯了个愚蠢的错误。
代码的方式是正确的,只是忽略了一些简单的事情。
guess.matches("[RGBPOY]+")
是手册中的工作代码。字符串 Colors
刚打印出RGBPOY。意味着我错过了一些东西,让这个工作.通过这样做要么
Colors = "[" + Colors + "]+";
if(guess.matches("Colors")) {
}
或者这个
if(guess.matches("["+stringArray+"]+")) {
}
由于两者都是[RGBPOY]+,所以代码就像手动放进去的一样工作。