10

ユーザーが予定の日付、説明、および予定の種類を入力できるようにする予定プログラムを作成しています。日付の範囲を印刷する「印刷範囲」を選択するまで、すべてが正しく機能します。これを選択すると、開始日と終了日を入力するように指示され、プログラムはそれらの日付の間からすべての予定を取得します出力ボックスに表示します。

print range で発生するエラーは次のとおりです。

AppointmentNew.java:68: unreported exception java.text.ParseException; must be caught or declared to be thrown
        Date lowDate = sdf.parse(stdin.nextLine());
                                ^
AppointmentNew.java:70: unreported exception java.text.ParseException; must be caught or declared to be thrown
        Date highDate = sdf.parse(stdin.nextLine());  
                                 ^
AppointmentNew.java:77: unreported exception java.text.ParseException; must be caught or declared to be thrown
           Date newCurrentDate = sdf.parse(currentDate); 

おそらくtry / catchブロックを実行する必要があると思いますが、その方法がよくわからないため、これらのエラーを修正するための回答または例を誰かが提供してくれるかどうか疑問に思っていました.

解析エラーが発生していると思われるコードの一部を次に示します。

import java.util.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class AppointmentNew 
{
public static void main (String[] args) throws Exception
{

if (choiceNum == 2)
     {
        System.out.print("\n\n\tEnter START Date in mm/dd/yyyy format: ");
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
        Date lowDate = sdf.parse(stdin.nextLine());
        System.out.print("\n\n\tEnter END Date in mm/dd/yyyy format: ");
       Date highDate = sdf.parse(stdin.nextLine());  

        for(int i = 0; i < list.size(); i++)
        {
           int dateSpot = list.get(i).indexOf(" ");
           String currentDate = list.get(i);
           currentDate.substring(0, dateSpot);
           Date newCurrentDate = sdf.parse(currentDate); 

           if (newCurrentDate.compareTo(lowDate) >= 0 && newCurrentDate.compareTo(highDate) <= 0)
           {
              System.out.println("\n\t" + list.get(i));

           }
        }
     }
4

2 に答える 2

20

エラーが発生する理由:

ここに画像の説明を入力

修正方法:

問題のあるコードを囲みます。これは、エラーをキャプチャしてログに記録し、うまくいけばそれについて何かできると言っているようなものですtry catch

 try {  // add this line
             System.out.print("\n\n\tEnter START Date in mm/dd/yyyy format: ");
             SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
             Date lowDate = sdf.parse(stdin.nextLine());
             System.out.print("\n\n\tEnter END Date in mm/dd/yyyy format: ");  
             Date highDate = sdf.parse(stdin.nextLine());  

             for(int i = 0; i < list.size(); i++)
             {
                int dateSpot = list.get(i).indexOf(" ");
                String currentDate = list.get(i);
                currentDate.substring(0, dateSpot);
                Date newCurrentDate = sdf.parse(currentDate); 

                if (newCurrentDate.compareTo(lowDate) >= 0 && newCurrentDate.compareTo(highDate) <= 0)
                {
                   System.out.println("\n\t" + list.get(i));   
                }
             }
         } catch (ParseException ex) {
              ex.printStackTrace(); // or log it using a logging framework
         }

または、メインに投げます-ここでは、次のように言っています:このメソッドを呼び出している人は誰でも、この問題が発生した場合は対処してください:

public static void main (String[] args) throws Exception
于 2013-04-20T05:01:07.887 に答える
13

Parse Exception はチェック例外であるため、処理する必要があります。スローするか、キャッチブロックを試してください。

public static void main (String[] args)

する必要があります

public static void main (String[] args) throws ParseException

またはtry catchブロックで

try {
    //All your parse Operations
} catch (ParseException e) {
   //Handle exception here, most of the time you will just log it.
   e.printStackTrace();
  }
于 2013-04-20T04:46:42.950 に答える