簡體   English   中英

是否可以在'if語句'中為單個變量提供多個整數值進行檢查

[英]Is it possible to give a single variable multiple integer values to be checked for in an 'if statement'

我對如何從NetBeans收到“表達式的非法開頭...不是語句”錯誤感到困惑。 我正在用Java編寫代碼,但對它來說還很新。

長話短說,我想知道是否有一種方法可以檢查單個變量是否包含多個整數值(不確定我的措詞是否正確。)這是我的代碼,在第一段中提到了它返回的錯誤:

 if (month == 1) && (month == 3) && (month == 5) && (month == 7) && (month == 8) && (month == 10) && (month == 12)

這是我第一次使用瞄准器,因此我對格式不正確表示歉意。

嘗試這個:

if (month == 1 && month == 3 && month == 5 && month == 7 && month == 8 && month == 10 && month == 12) {}

但是為什么在這里使用&& 該表達式始終為false 您不應該使用||

  1. 語法正確的java if語句期望一對括號if (...) ,但是您寫了很多對if (...)(...)... 這就是語法錯誤的來源。

  2. AND(&&)是錯誤的邏輯運算符。 OR(||)將是正確的運算符。

可能的解決方案:

if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)

if ((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12))

或者使用switch case語句:

switch (month) {
    case 1:  // do something ...;
             break;
    case 3:  // do something ...;
             break;
    case 5:  // do something ...;
             break;
    case 7:  // do something ...;
             break;
    case 8:  // do something ...;
             break;
    case 10: // do something ...;
             break;
    case 12: // do something ...;
             break;
    default: // month is not in one if the given values;
             break;
}

或者您可以使用循環:

int[] values = {1,3,5,7,8,10,12};
for (int i : values) {
    if (month == i) {
        // do something ...
    }
}

是的,有可能,但是您遇到語法錯誤,需要將條件包裝成括號:

if ((month == 1) && (month == 3) && (month == 5) && (month == 7) && (month == 8) && (month == 10) && (month == 12)) {
    //Your code
}

但這在邏輯上是有問題的,因為這永遠是不正確的。 您最可能想檢查變量是否具有指定的月份值:

if ((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12)) {
    //Your code
}

因此,當您說檢查多個整數值時,Im會假設您的意思是您想查看月份是否為以下任何值。

因此,您需要稍微更改一下親子系統。

if ((month == 1) && (month == 3) && (month == 5) && (month == 7) && (month == 8) && (month == 10) && (month == 12))

具有第一個if(month == 1)會結束if語句,因此其他任何事情都無法預料。

此外,我認為您想要OR運算符|| 而不是&&&,因為該月份不太可能一次成為所有這些值。

采用

if ((month == 1) && (month == 3) && (month == 5) && (month == 7) && (month == 8) && (month == 10) && (month == 12))

如果你談論的是真實的情景月份一個月,然后只能是true一次,所以復合&&聲明將永遠是false 我認為您打算使用||

假設

 month = 3;

然后

if ((3== 1) && (3== 3) && (3== 5) && (3== 7) && (3== 8) && (3== 10) && (3== 12))

即使一次為true也會返回false

但在|| 案件

if ((3== 1) || (3== 3) || (3== 5) || (3== 7) || (3== 8) || (3== 10) || (3== 12))

然后它將返回true

if條件的通用語法

if (condition) {
  // stuff
}

這里的關鍵是條件被括號包圍。 您的條件可能由不同的表達式組成:

if (month == 1) { // month equals 1
  // stuff
}

if (month == 1 || month == 2) { // month equals either 1 or 2.
  // stuff
}

不必在每個表達式周圍都用括號括起來; 當您涉及多個運算符時,例如當您的條件同時包含&&||時,通常用於操作順序 而且您不想讓Java弄清楚如何將它們組合在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM