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我开始这项工作时做了一些完全不同的事情。随着工作的进行,我被迫做这类事情,并且必须边做边学。虽然我做的越多,我就越喜欢它