title: Java, I dont understand why this is happening, variable changes
body: <pre><code>    public void askForDate(Scanner in) {
      System.out.println("Please enter the date that the vehicle entered the car park in this format dd/mm/yyyy :");
      String enteredDate = in.nextLine();
  
      //This array will hold the 3 elements of which the date is made up of, day, month and year, and this method returns it.
      String[] dateEnteredSplit = enteredDate.split("/");
  
      //I am using the split method to seperate each number, which returns an array, so I am assigning that array to the dateEnteredSplit array.
      //dateEnteredSplit = enteredDate.split("/");
      //So now the first element holds the day, second the month, and the third element holds the year.
  
      //System.out.println(Arrays.toString(dateEnteredSplit));
  
      //Assigning each element and converting them to integers.
      int day = Integer.parseInt(dateEnteredSplit[0]);
      int month = Integer.parseInt(dateEnteredSplit[1]);
      int year = Integer.parseInt(dateEnteredSplit[2]);
  
      **System.out.println("day: " + day + "  month: " + month + "  year: " + year);**
  
      //The loop will be entered if any of the values are wrong. which will use recursion to call this method again for a chance to enter the date again.
      while (!(day &gt;= 1 &amp;&amp; day &lt;= 31) || !(month &gt;= 1 &amp;&amp; month &lt;= 12) || !(year &gt; 1000 &amp;&amp; year &lt; 5000)) {
          **System.out.println("day: " + day + "  month: " + month + "  year: " + year);**
          //Im calling these methods to inform which one specifially was wrong so they know what they need to change.
          this.setDay(day);
          this.setMonth(month);
          this.setYear(year);
  
          dateEnteredSplit[0] = "0";
          askForDate(in);
      }
  
      //I then assign any correct value into the object attribute because the while loop is either finished or not entered at all. 
      //No need to use setDay etc. here because the checks have been done above in the while loop.
      this.day = day;
      this.month = month;
      this.year = year;  
  }
  </code></pre>
  
  <p>Ok that is a method in a class. It asks for input in the format dd/mm/yyyy</p>
  
  <p>If the first time I input 12/1/1996 it works, but if I enter a wrong date for example like this first, 123/123/123 and the enter a correct date for example 12/1/1996, it still enters the loop.</p>
  
  <p>After debugging, the first line that is bold, the values are different from the second line that is bold, its like the values are changing by their own.</p>
  
  <p>What is the problem here? I have been trying to find out in the past 1 hour.</p>
  
  <p>Thanks in advance!</p>