3
String selectedDate = "2012-" + createdMonth
        + "-" + createdDay;

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");

try {
    Date createdDate = dateFormat.parse(selectedDate);
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

int x = JOptionPane.showOptionDialog(frame,
    "Here is your new booking schedule:\n "
        + "Timeslot: "
        + selectedTimeslot + "\n"
        + "Date: " + createdDate + "\n"
        + "Continue?",
    "Booking Confirmation",
    JOptionPane.YES_NO_OPTION,
    JOptionPane.QUESTION_MESSAGE, null,
    options, options[1]);

問題は、JOptionPane の createdDate を変数に解決できないことです。何故ですか?try catch の外で Date オブジェクトを初期化するなど、あらゆることを試しましたが、それでもうまくいきません。ヘルプ!

4

4 に答える 4

5

tryブロックが完了すると、変数はスコープ外になるためです。jOptionPaneコードをtryブロック内に移動するか、createDate宣言をtryブロック外に移動します。

于 2013-01-22T13:54:03.347 に答える
1

独自のスコープであるtry-catchブロック内で変数を定義しています。tryブロックの外側では、変数は「スコープ外」であるため、後の時点で「存在しません」。

于 2013-01-22T13:53:56.133 に答える
0

変数のスコープは、宣言されている場所であるため、try{}内にあります。あなたはこのようなことをすることができます:

Date createDate;
try
{
    createDate = dateFormat.parse(selectedDate);
}
....
于 2013-01-22T13:54:11.110 に答える
0

tryのスコープ内で変数を宣言しました。「DatecreatedDate=....」を使用しました。これは、try{..}の範囲外になると存在しなくなることを意味します。必ず試行の範囲外で宣言し、それが機能するかどうかを確認してください。

于 2013-01-22T13:54:14.253 に答える