У меня есть несколько строк, которые должны иметь определенное значение для запуска уведомления, но я не могу найти способ их объединить

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());
            }

Заранее спасибо всем, если мне нужно предоставить дополнительную информацию, я могу сделать

ИЗМЕНИТЬ Я пробовал следующие темы безрезультатно

Поток 1

Поток 2

Поток 3

0
Marcusswitch 21 Окт 2015 в 14:05

2 ответа

Лучший ответ

Вы должны использовать логический AND, который в 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().

4
Stanislav 21 Окт 2015 в 11:15

Чтобы сделать код более читабельным, рассмотрите возможность рефакторинга до вспомогательного метода:

// 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
}
1
Alex Salauyou 21 Окт 2015 в 11:54