If语句中的多个变量?
我对Java语言相当陌生,而且我遇到了一些问题。If语句中的多个变量?
我正在试图制作真正简单的战舰游戏。我有一个数组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)
我试过查找它,但没有成功。 提前谢谢!
您可以创建八个名字的列表,并使用contains
if (n == 1 && Arrays.asList("n", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8").contains(x)) {
System.out.println("Nice shot. Boat down.")
}
这种方法也恰好是无效的。
工程就像一个魅力!谢谢 。我现在正在努力改进它:-) –
Java没有类似的操作符那些你提到的。但是你可以使用循环重写代码:
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.")
}
您可以使用contains来代替遍历整个列表。 'if(n == 1 && fields.contains(x))''。使列表成为恒定的静态字段也可能是一个好主意。 –
@MalteHartwig你是对的!谢谢,我已经更新了我的答案 –
我马上试试!谢谢你这么快速的回应! –
尼古拉直接去的地步,我建议另一种选择是看到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
它不起作用。您只能使用new关键字将数组作为参数传递 –
几个选择:
使用正则表达式(工作与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.")
}
请注意,你的条件相当于:'n ==可1 &&(x.equals( “N”)|| x.equals(“n1”).. && x.equals(“n8”))' –
我不知道我明白了。你可以包含整个if语句吗? –
对于此任务,您需要一个循环。类似于Mykota在答案中所写的内容 –