簡體   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