Java 为什么Arrays.asList(…).contains(…)不是';不行吗?
我开始创建游戏,现在我正在测试玩家输入Java 为什么Arrays.asList(…).contains(…)不是';不行吗?,java,Java,我开始创建游戏,现在我正在测试玩家输入 package main; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Game { public static void main(String[] args) throws IOException { final char[] keyCodesArray = {'w',
package main;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Game {
public static void main(String[] args) throws IOException {
final char[] keyCodesArray = {'w','a','s','d'};
while(true) {
char tmp = (char) new InputStreamReader(System.in).read ();
if(Arrays.asList(keyCodesArray).contains(tmp)) {
System.out.println("You entered : " + tmp);
} else {
System.out.println("Type valid game char");
}
}
}
}
为什么,当我按“w”或“a”时,控制台会打印第二个“输入有效的游戏字符”,而不是第一个?我在StackOverflow中搜索答案,但没有任何帮助。不能使用
Arrays.asList()
包装基本数组。您需要一个自定义方法来检查数组中是否包含值:
static boolean contains(char[] array, char value) {
for (char c : array)
if (c == value)
return true;
return false;
}
您当前的方法是不正确的,因为当您执行
Arrays.asList(keyCodesArray)
时,您得到的结果如下所示:
List<char[]>
为此:
final Character[] keyCodesArray = {'w','a','s','d'};
当您应用数组时,它本质上提供了一个列表
。asList(keyCodesArray),因此:
if(Arrays.asList(keyCodesArray).contains(tmp)) { ... }
可以。你认为数组的类型是什么?(注意:它不是
列表
)我只想在这里使用一个字符串“wasd”(注意循环中的new
)
if(Arrays.asList(keyCodesArray).contains(tmp)) { ... }