mercredi 10 novembre 2021

Java && || operators precedent

I need help with one if condition in java code

    public class Main
    {
        public static void main(String[] args) {
            String sHeaderStatus = "1";
            Boolean hasButton = false;
            Boolean editableLineStatus =true;
            String sFrom = "REQ";
            int canChangeSupplier = 0;
            if ((sHeaderStatus.equals("1") || canChangeSupplier == 1 && 
            (sHeaderStatus.equals("10") || sHeaderStatus.equals("14") || sHeaderStatus.equals("85") || sHeaderStatus.equals("86") || sHeaderStatus.equals("87"))
            || hasButton && editableLineStatus && !sHeaderStatus.equals("85")) || sFrom.equals("APPROVAL")) {
                String valdiaton ="true11";
            System.out.println(valdiaton);              
            }       
        }

result is true11

    public class Main
    {
        public static void main(String[] args) {
            String sHeaderStatus = "1";
            Boolean hasButton = false;
            Boolean editableLineStatus =false; //changed this one to false
            String sFrom = "REQ";
            int canChangeSupplier = 0;
            if ((sHeaderStatus.equals("1") || canChangeSupplier == 1 && 
            (sHeaderStatus.equals("10") || sHeaderStatus.equals("14") || sHeaderStatus.equals("85") || sHeaderStatus.equals("86") || sHeaderStatus.equals("87"))
            || hasButton && editableLineStatus && !sHeaderStatus.equals("85")) || sFrom.equals("APPROVAL")) {
                String valdiaton ="true11";
            System.out.println(valdiaton);
                
            }
            
        }

result is still true11

I am not able to understood the issue.

Per my understanding...

sHeaderStatus.equals("1") || canChangeSupplier == 1 // gave true
(sHeaderStatus.equals("10") || sHeaderStatus.equals("14") || sHeaderStatus.equals("85") || sHeaderStatus.equals("86") || sHeaderStatus.equals("87"))
            || hasButton   // gave false

become true && false && true && true

Similarly second code would become true && false && false &&true

Am not sure how this become true and below line printed.

Aucun commentaire:

Enregistrer un commentaire