繁体   English   中英

If语句中有多个变量?

[英]Multiple variables in 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)

我尝试查找,但没有成功。 先感谢您 !

几种选择:

使用正则表达式(适用于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.")
}

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.")
}

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

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

这种方法也碰巧是空安全的。

迈科拉说得很对,我建议您从这里看到另一个选择:

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

我现在没有安装jdk来正确检查它,但这是想法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM