0

1 か月あたりの正しい日数と閏年を考慮して、翌日のメソッドでユーザーが入力した日付に 1 日を追加し、40 日を正しく追加できるようにしようとしています。

public nextday() {
    for (int count = 1; count < 40; count++)
        ;
}

public String toDayDateString() // toDayDateString method {
    int countDays = 0;

    for (int i = 1; i < getMonth(); i++) {
        if (i == 2 && checkLeapYr(getYear()))
            countDays += 29;
        else
            countDays += daysPerMonth[i];
    }
    countDays += date;
    String message = String.format("\n", countDays, getYear());
    return message;
}

private Boolean checkLeapYr(int inYear) { // check leap year method.
    if (getYear() % 400 == 0 || (getYear() % 4 == 0 && getYear() % 100 != 0))
        return true;
    else
        return false;
}

以下は、ユーザーが日付を入力するか終了するかを選択できるはずのメニューですが、日付が正しく受け入れられていません。

{
 public static void main ( String [] args)
// User selects how they will enter the dates
 {      
   +"(1) Enter the date as MM/DD/YYYY\n"
   +"(Any Key) Quit\n";
  int input=0;

  Date newDate;

  do{
   String userInput = JOptionPane.showInputDialog(null, menu);
   input = Integer.parseInt( userInput);
   String outputMessage="";

   if ( input = 1)
   {
    userInput =JOptionPane.showInputDialog(null, "Please enter a date as 02/28/2011");

    switch ( input )  // here is where the menu choice will be evaluated
    {
     case 1 :
      token = userInput.split("/");
      if (token.length == 3 )

      {
       newDate = new Date( Integer.parseInt( token[0]),
        Integer.parseInt( token[1]), Integer.parseInt( token[2]) );
       outputMessage = newDate.toString();
       JOptionPane.showMessageDialog(null, outputMessage);
      }

      break;

     case 2:
  } while ( input <>1); // this will quit the program when user selects any key other than 1 at the menu.
4

3 に答える 3

2
  • java.text.DateFormat日付文字列を解析するために使用する必要があります
  • 独自の日付演算を記述すると、非常にエラーが発生しやすくなります (うるう年は多くの例外の 1 つにすぎません) java.util.Calendar。代わりに実装を使用することをお勧めします。

日付演算については、次のようにしCalendarます。

//TODO: parse input string with DateFormat
Date startDate = ... // your parsed date

Calendar cal = new GregorianCalendar();
cal.setTime(startDate);

for (int i = 0; i < 40; i++) {

    // add a day
    cal.add(Calendar.DATE, 1);

    // and get the new result as date
    Date date = cal.getTime();

    System.out.println(date);
}

逆にカウントする必要がある場合は、の時間量 (日、時間など) を追加します。

于 2013-09-24T15:48:20.483 に答える
0
    public static void main(String[] args) throws IOException,ParseException{
                BufferedReader br = new BufferedReader(new   InputStreamReader(System.in));       
                System.out.print("Enter date(dd/mm/yyyy) : ");
                String input = br.readLine();
                DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
                Calendar cal = Calendar.getInstance();
                Date date = df.parse(input);
                cal.setTime(date);
                for (int i = 1; i <=40; i++) {
                    cal.add(Calendar.DATE,1);
                    System.out.println(" day " + i + " : " + cal

.getTime());

            }
        }
于 2015-03-05T09:33:45.363 に答える