私はJavaでプログラムを書いています。これは、基本的に2つの特定の日付の間の日数を検出します。ユーザーがDD/MM / YYYY形式で2つの日付を入力し、日/月/年のサブ文字列を取得して、2の間の日数を計算します。また、形式が間違っている場合は、ある種の検証を行いました。 (たとえば、d / mm / yyyy)次に、その人は正しい形式で日付を書き直す必要があります。これは、日付の/が正しい位置にあることを確認することによって行いました。4 /が一致する場合、ブール変数はtrueを返し、プログラムは続行します。そうでない場合は、falseを返し、日付を再度要求します。
問題は、それが常に私に誤りを与えていることであり、それでも、それは再ループバックしていません。
import java.util.*;
public class DateDifference {
int day1, day2, month1, month2, year1, year2;
String startdate, enddate, day1S, day2S, month1S, month2S, year1S, year2S;
String datevalidation = "/";
boolean dval;
public static void main(String args[]){
DateDifference difference = new DateDifference();
}
DateDifference() {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
Scanner sc = new Scanner (System.in);
do {
System.out.println("Enter Start Date [dd/mm/yyyy]:");
startdate = sc.next();
System.out.println("Enter End Date [dd/mm/yyyy]:");
enddate = sc.next();
int l1 = startdate.length();
int l2 = enddate.length();
day1S = startdate.substring(0,2);
month1S = startdate.substring(3,5);
year1S = startdate.substring(6,l1);
day2S = enddate.substring(0,2);
month2S = enddate.substring(3,5);
year2S = enddate.substring(6,l2);
if (startdate.substring(2,3).equals(datevalidation) & startdate.substring(5,6).equals(datevalidation) & enddate.substring(2,3).equals(datevalidation) & enddate.substring(5,6).equals(datevalidation))
dval = true;
else
dval = false;
System.out.println("Wrong date format. Try again");
} while (dval = false);
day1 = Integer.parseInt(day1S);
month1 = Integer.parseInt(month1S);
year1 = Integer.parseInt(year1S);
day2 = Integer.parseInt(day2S);
month2 = Integer.parseInt(month2S);
year2 = Integer.parseInt(year2S);
cal1.set(year1, month1 - 1, day1);
cal2.set(year2, month2 - 1,day2);
System.out.println("Days= "+daysBetween(cal1.getTime(),cal2.getTime()));
}
public int daysBetween(Date cal1, Date cal2){
return (int)( (cal2.getTime() - cal1.getTime()) / (1000 * 60 * 60 * 24));
}
}
これがどのように機能しているかについてのいくつかの画像です:
入力が正しい場合:http: //vvcap.net/db/2100RYdaSM1T6EXLqgq5.png
入力が正しくない場合:http: //vvcap.net/db/9qSEwDKSTIdLAWmxS_Cy.png
正しくない場合、整数で1 /を作成しようとすると、スタックします。これは理解できます。
何か助けはありますか?
どうもありがとう。