クライアントの入場日と退出日を取得して、それらが有効かどうかを確認しようとしています。しかし、プログラムを実行するたびにランダムな日が月に追加されます。たとえば、03 を入力した後、月は 43 になります。理由を教えてください。
public void makeNewReservation() throws ParseException {
// Enter informations
boolean error=true;
boolean dateOK=false;
String date_sortiee="";
String date_entree="";
Scanner in=new Scanner(System.in);
while(error){
//take date of checkin and checkout and verify if they are OK
System.out.println("Single room selected ? dd/MM/yyyy");
System.out.println("Date de Entree?");
in=new Scanner(System.in);
// date_entree = in.next();
System.out.println("Date de Entree? dd/MM/yyyy");
date_entree = in.next();
String[] test = date_entree.split("/");
int day = Integer.parseInt(test[0]);
int Month = Integer.parseInt(test[1]);
int year = Integer.parseInt(test[2]);
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
GregorianCalendar checkin= new GregorianCalendar();
checkin.set(year, Month, day);
System.out.println("Date de Sortie? dd/MM/yyyy");
date_sortiee = in.next();
String[] test1 = date_sortiee.split("/");
int day1 = Integer.parseInt(test[0]);
int Month1 = Integer.parseInt(test[1]);
int year1 = Integer.parseInt(test[2]);
DateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
GregorianCalendar checkout= new GregorianCalendar();
//System.out.println(format.format(checkin));
checkout.set(year1, Month1, day1);
checkdate(checkin,checkout);
dateOK= checkdate(checkin, checkout);
if (dateOK){
error=false;
}
else{
error=true;
}
}
public boolean checkdate(GregorianCalendar in,GregorianCalendar out){
DateFormat format = new SimpleDateFormat("dd/mm/yyyy");
GregorianCalendar today = new GregorianCalendar();
System.out.println(format.format(in.getTime()));
boolean test=false;
if(in.before(out)&&in.after(today)|| in.before(out)&& in.equals(today)){
System.out.println("puck u");
test= true;
}
return test;