Java 如何组合多个if(stringname.equals(“value”)?
我有多个字符串,它们必须具有一定的值才能触发通知,但我似乎找不到一种方法来组合它们Java 如何组合多个if(stringname.equals(“value”)?,java,android,string,android-studio,equals,Java,Android,String,Android Studio,Equals,我有多个字符串,它们必须具有一定的值才能触发通知,但我似乎找不到一种方法来组合它们 String wppanswer,tbanswer,ctanswer,ssowpanswer,cppanswer; if (wppanswer.equals("Yes")) (tbanswer.equals("Yes")) (ctanswer.equals("Yes")) (ssowpanswer.equals("Yes"))
String wppanswer,tbanswer,ctanswer,ssowpanswer,cppanswer;
if (wppanswer.equals("Yes"))
(tbanswer.equals("Yes"))
(ctanswer.equals("Yes"))
(ssowpanswer.equals("Yes"))
(ssowpanswer.equals("N/A"))
(cppanswer.equals("Yes")){
NotificationCompat.Builder Yes =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.adccube)
.setContentTitle("Success!")
.setContentText("YEY! You have everything you need, proceed with work");
int mNotificationId = 001;
NotificationManager mNotifyMgr =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(mNotificationId, Yes.build());
}
提前谢谢大家,如果我需要提供更多的信息,我可以做
编辑我已经尝试了下面的线程没有用
您必须使用逻辑
和
,即Java中的&&
,使if块代码仅在所有条件均为真时执行,如:
if (wppanswer.equals("Yes") &&
tbanswer.equals("Yes") &&
ctanswer.equals("Yes") &&
ssowpanswer.equals("Yes") &&
ssowpanswer.equals("N/A") &&
cppanswer.equals("Yes")){
//your code here
}
此外,正如评论中所说的,最好在代码中使用
“Yes.”equals(wppanswer)
样式,以防止NullPointerException
如果您的wppanswer
或任何其他对象将为NULL,而您调用它的equals()
方法。您必须使用逻辑和,这是Java中的&&
,仅当所有条件都为真时才执行if块代码,如:
if (wppanswer.equals("Yes") &&
tbanswer.equals("Yes") &&
ctanswer.equals("Yes") &&
ssowpanswer.equals("Yes") &&
ssowpanswer.equals("N/A") &&
cppanswer.equals("Yes")){
//your code here
}
此外,正如评论中所说,最好在代码中使用“Yes.”equals(wppanswer)
样式,以防止NullPointerException
如果您的wppanswer
或任何其他对象将为NULL,而您调用它的equals()
方法。为了使代码更可读,考虑辅助方法的重构:
// returns true if and only if all objects are equal to each other
public static boolean allEquals(Object first, Object... rest) {
for (Object o : rest)
if (!Objects.equals(first, o)) // `Objects#equals` to avoid NPE
return false;
return true;
}
然后在主代码中使用它:
if (allEquals("Yes", wppanswer, tbanswer, ctanswer, ssowpanswer, cppanswer)
&& "N/A".equals(ssowpanswer)) {
// trigger action
}
<> >为了使代码更可读,将重构考虑到帮助方法:
// returns true if and only if all objects are equal to each other
public static boolean allEquals(Object first, Object... rest) {
for (Object o : rest)
if (!Objects.equals(first, o)) // `Objects#equals` to avoid NPE
return false;
return true;
}
然后在主代码中使用它:
if (allEquals("Yes", wppanswer, tbanswer, ctanswer, ssowpanswer, cppanswer)
&& "N/A".equals(ssowpanswer)) {
// trigger action
}
你听说过或(|
)和(&&
)吗?让它更为空安全,并交换相等值:“是”。相等值(tbanswer)但是。。。你的代码永远不会编译。@Eran我知道OR,但不知道AND,在搜索时似乎也无法正确表达问题。多谢了,当涉及到与等于的字符串比较时,通常最好以相反的方式编写比较。因此,您可以编写“Yes”.equals(wppanswer)
而不是wppanswer.equals(“Yes”)
,这并不能解决您的问题,但可以节省大量空指针检查。要连接不同的表达式,应使用&&
(and)或|
(or)。这些布尔运算符可以用来表示if(X&&Y)
(X和Y都必须为真)或if(X | | Y)
(只有一个必须为真)。@Aron_dc我开始这项工作时做了一些完全不同的事情。随着工作的进行,我被迫做这类事情,并且必须边做边学。虽然我做的越多,我就越喜欢你听说过的或(|
)和(&&
)?使它更为空安全,并交换相等值:“是”。相等值(tbanswer)但是。。。你的代码永远不会编译。@Eran我知道OR,但不知道AND,在搜索时似乎也无法正确表达问题。多谢了,当涉及到与等于的字符串比较时,通常最好以相反的方式编写比较。因此,您可以编写“Yes”.equals(wppanswer)
而不是wppanswer.equals(“Yes”)
,这并不能解决您的问题,但可以节省大量空指针检查。要连接不同的表达式,应使用&&
(and)或|
(or)。这些布尔运算符可以用来表示if(X&&Y)
(X和Y都必须为真)或if(X | | Y)
(只有一个必须为真)。@Aron_dc我开始这项工作时做了一些完全不同的事情。随着工作的进行,我被迫做这类事情,并且必须边做边学。虽然我做的越多,我就越喜欢它