我是Java语言的新手,我有点问题。
我正在尝试制作非常简单的战舰游戏。我有一个3x3阵列,填充0和1. 1表示有一条船。
数组中的每个插槽都命名为n-n8。我想知道是否有一种方法可以在一个if语句中命名所有变量。
我现在正在做的方式是
if((n == 1 && x.equals("n") || (n == 1 && x.equals("n1") .. (n == 1 && x.equals("n8")){
System.out.println("Nice shot. Boat down.")}
x是用户输入。你可能会明白这一点。 所以我想知道是否有办法缩短if语句或没有别的办法。类似的东西:
if(n, n1, n2.. n8)
我试过查找但没有成功。 提前谢谢!
答案 0 :(得分:1)
有两种选择:
使用正则表达式(适用于Java 7/8/9):
if (n == 1 && x.matches("n[1-8]?") {
System.out.println("Nice shot. Boat down.")
}
使用新的Java 9 List.of
便捷方法(替代Arrays.asList
):
if (n == 1 && List.of("n", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8").contains(x) {
System.out.println("Nice shot. Boat down.")
}
答案 1 :(得分:0)
Java没有与你提到的类似的运营商。但您可以使用for循环重写代码:
for (String number : Arrays.asList("n", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8")) {
if (n == 1 && x.equals(number)) {
System.out.println("Nice shot. Boat down.");
break;
}
}
甚至更好地使用contains
代替循环
List<String> numbers = Arrays.asList("n", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8");
if (n == 1 && numbers.contains(x)) {
System.out.println("Nice shot. Boat down.")
}
答案 2 :(得分:0)
您可以创建八个名称的列表,然后使用contains
if (n == 1 && Arrays.asList("n", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8").contains(x)) {
System.out.println("Nice shot. Boat down.")
}
这种方法也恰好是无效的。
答案 3 :(得分:0)
Mykola说得对,我建议另一种选择here:
if(n == 1 && Arrays.asList(yourArray).contains(['n1', 'n2', 'n3', 'n4', 'n5', 'n6', 'n7', 'n8']);){
System.out.println("Nice shot. Boat down.")
}
我现在没有安装jdk来正确检查它,但这是ideia