title: How do operators work in Java and why does this method return null?
body: <p>i am studying computer science and my homework was finding the next day.</p>
  
  <p>The method <code>getNextDay()</code> returns null and doesn't go through my <code>If</code> statements.</p>
  
  <p>Here are the two classes that are used:</p>
  
  <pre><code>public class NextDay {
  
             public static void main(String args[]) throws Exception {
                Date dateObj = new Date(30, 3, 2016);
                System.out.println("Altes Datum: " + dateObj.gibTag() + "." + dateObj.gibMonat() + "." + dateObj.gibJahr() + ".");
                System.out.println("Der naechste Tag ist der " + dateObj.getNextDay().toString() + ".");
             }
  }
  
  
  
  public class Date {
      int tag;
      int monat;
      int jahr;
  
      public Date(int tag, int monat, int jahr){
          this.tag = tag;
          this.monat = monat;
          this.jahr = jahr;
      }
  
      public Date getNextDay() throws Exception{  
  
          if(monat == 2){
          // wenn Februar 29 Tage hat.
          if(jahr % 4 == 0 | jahr % 400 == 0){
              if(tag &gt; 0 &amp; tag &lt; 29){
                  return new Date(tag + 1, monat, jahr);  
              }
              else if(tag == 29 &amp; monat == 2){
                  return new Date(tag - tag + 1, monat + 1, jahr);
              }else{
                  throw new Exception("Im Februar können Sie nur bis 28 schreiben!");
              }   
          }
          // wenn Februar 28 Tage hat.
          if(jahr % 4 != 0 | jahr % 100 != 0 &amp; monat == 2){
              if(tag &gt; 0 &amp; tag &lt; 28){
                  return new Date(tag + 1, monat, jahr);  
              }else if(tag == 28 &amp; monat == 2){
                  return new Date(tag - tag + 1, monat + 1, jahr);
              }           
              else{
                  throw new Exception("Im Februar können Sie nur bis 28 schreiben!");
              }   
          }
          }
  
  
          if(monat != 2 &amp; monat == 1 &amp; monat == 3 &amp; monat == 5 &amp; monat == 7 &amp; monat == 8 &amp; monat == 10 &amp; monat == 12 ){
          if(tag &lt;= 31 &amp; monat &lt;= 12 &amp; jahr &gt; 0){
              if(tag &lt; 31){
                  return new Date(tag + 1, monat, jahr);  
              }
              else if(tag == 31 &amp; monat &lt; 12){
                  return new Date(tag - tag + 1, monat + 1, jahr);
              }
              else if(monat == 12){
                  if(tag == 31 &amp; monat == 12){
                      return new Date(tag - tag + 1, monat - monat + 1, jahr + 1);
                  }else{
                      return new Date(tag, monat, jahr + 1);
                  }
              }
  
          }
              else{
                  throw new Exception("Sie haben ein ungültiges Datum eingegeben!");
              }
  
          }
  
  
          if(monat != 2 &amp; monat == 4 &amp; monat == 6 &amp; monat == 9 &amp; monat == 11){
              if(tag &lt;= 30 &amp; monat &lt;= 12 &amp; jahr &gt; 0){
                  if(tag &lt; 30){
                      return new Date(tag + 1, monat, jahr);  
                  }
                  else if(tag == 30 &amp; monat &lt; 12){
                      return new Date(tag - tag + 1, monat + 1, jahr);
                  }
                  else if(monat == 12){
                      if(tag == 31 &amp; monat == 12){
                          return new Date(tag - tag + 1, monat - monat + 1, jahr + 1);
                      }else{
                          return new Date(tag, monat, jahr + 1);
                      }
                  }
  
              }
                  else{
                      throw new Exception("Sie haben ein ungültiges Datum eingegeben!");
                  }
  
              }
          return null;
  
  
      }
  
  
  
      public int gibTag(){
          return tag;
      }
  
      public int gibMonat(){
          return monat;
      }
  
      public int gibJahr(){
          return jahr;
      }       
  
  
      public String toString(){
          return this.tag + "." + this.monat + "." + this.jahr;
      }
  }
  </code></pre>