Java If语句中有多个变量?
我对Java语言相当陌生,我有点问题 我想做一个非常简单的战舰游戏。我有一个3x3的数组,里面填充了0和1。意思是有一条船 阵列中的每个插槽都命名为n-n8。我想知道是否有一种方法可以在一个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
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 9List.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.")
}