Java If语句中有多个变量?

Java If语句中有多个变量?,java,arrays,variables,if-statement,Java,Arrays,Variables,If Statement,我对Java语言相当陌生,我有点问题 我想做一个非常简单的战舰游戏。我有一个3x3的数组,里面填充了0和1。意思是有一条船 阵列中的每个插槽都命名为n-n8。我想知道是否有一种方法可以在一个if语句中命名所有变量 我现在的做法是 if((n == 1 && x.equals("n") || (n == 1 && x.equals("n1") .. (n == 1 && x.equals("n8")){ System.out.println("Nic

我对Java语言相当陌生,我有点问题

我想做一个非常简单的战舰游戏。我有一个3x3的数组,里面填充了0和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)
我试着查找,但没有成功。
提前谢谢你

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;
    }
}
或者更好地使用
包含
而不是循环

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.")
}
列表编号=数组。asList(“n”、“n1”、“n2”、“n3”、“n4”、“n5”、“n6”、“n7”、“n8”);
如果(n==1&&numbers.contains(x)){
System.out.println(“好球,船沉了。”)
}

您可以创建八个名称的列表,并使用
contains

if (n == 1 && Arrays.asList("n", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8").contains(x)) {
    System.out.println("Nice shot. Boat down.")
}

这种方法也恰好是空安全的。

Mykola直截了当地说,我建议另一种选择,如图所示:


我现在没有安装jdk来正确检查它,但这是ideia,有两种选择:

使用正则表达式(适用于Java 7/8/9):

使用新的Java 9
List.of
便利方法(替代
Arrays.asList
):


请注意,您的条件等价于:
n==1&&(x.equals(“n”)| x.equals(“n1”)…&&x.equals(“n8”)
我不确定我是否理解这一点。您能否包含整个
if
语句?对于此任务,您需要一个循环。类似于Mykota在回答中所写的东西除了“n[m]”之外,x还能包含什么?最短if语句不会检查数组的所有名称!您可以使用contains,而不是在列表中循环<代码>如果(n==1&&fields.contains(x))
。使列表成为一个恒定的静态字段也可能是一个好主意。@MalteHartwig你是对的!谢谢,我已经更新了我的答案,我马上就去试试!谢谢你这么快的回复!这行不通。您可以通过数组作为参数只使用新的关键字像一个符咒!非常感谢。我现在要努力改进它:-)
if(n == 1 && Arrays.asList(yourArray).contains(['n1', 'n2', 'n3', 'n4', 'n5', 'n6', 'n7', 'n8']);){
    System.out.println("Nice shot. Boat down.")
}
if (n == 1 && x.matches("n[1-8]?") {
    System.out.println("Nice shot. Boat down.")
}
if (n == 1 && List.of("n", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8").contains(x) {
    System.out.println("Nice shot. Boat down.")
}