![](/img/trans.png)
[英]is it possible to shorten a conditional statement checking for a bunch of different values for a single variable
[英]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
。 您不應該使用||
?
語法正確的java if語句期望一對括號if (...)
,但是您寫了很多對if (...)(...)...
這就是語法錯誤的來源。
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.