If语句中有多个变量?

时间:2017-10-10 09:24:04

标签: java arrays variables if-statement

我是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)

我试过查找但没有成功。 提前谢谢!

4 个答案:

答案 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