2

私のGUIのアイデア 私は複数のことを行うツールを作成しており、今のところ最後の機能に取り組んでいます。日付を入力すると、その日付が何曜日になるかがわかります。

だから私はここに2つの問題があります:

  1. 引数を使用できません。好きではありません
  2. 最後の行では、jTextArea2.setText(d0); を使用できません。それも嫌だから…

私のコードはここにあります:

    public static void main(String[] args) { 
        int d = Integer.parseInt(args[0]);
        int m = Integer.parseInt(args[1]);
        int y = Integer.parseInt(args[2]);

        int y0 = y - (14 - m) / 12;
        int x = y0 + y0/4 - y0/100 + y0/400;
        int m0 = m + 12 * ((14 - m) / 12) - 2;
        int d0 = (d + x + (31*m0)/12) % 7;

        System.out.println("Sunday = 0\nMonday = 1\nTuesday = 2\nWednesday = 3\nThursday = 4\nFriday = 5\nSaturday = 6\nThis date is on a:");
        System.out.println(d0);

基本的に、このコードは最初はコンソールで使用するためのものでしたが、今は Swing GUI アプリに実装したいと考えています。

私は Java を学び始めてまだ 1 週間しか経っていないので、問題が明らかであるか、簡単に修正できる場合は申し訳ありません...しかし、誰かがそれをどのように処理するかを理解できますか? ありがとう!

4

4 に答える 4

2

あなたの足元にある質問は、日付がどのような形式で来るかです。

値を入力するための を指定しただけなJTextAreaので、ほぼ何でも入力できます...

したがって、まず最初に、着信値を受け入れる方法が必要です...

public String toDayOfWeek(String date) {
}

ここから、入力値をフォーマットする必要がありますDate

String dayOfWeek = null;
try {
    Date date = DateFormat.getDateInstance().parse(date);
} catch (ParseException exp) {
    dayOfWeek = date + " is an invalid date format";
}
return dayOfWeek;

(明らかに、上記はtoDayOfWeek(String)メソッドに属します)

さて、個人的には、値を別のメソッドに渡しDateますが、それは私が夢中になっている原因です...

public String toDayOfWeek(Date date) {
    // Now you could extract the various values from the Date object
    // but those methods are deprecated...
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);

    int day = cal.get(Calendar.DATE);
    int month = cal.get(Calendar.MONTH); // Months are 0 based
    int year = cal.get(Calendar.YEAR);

    // Your calculation here...

    return yourDayCalculation;
}

しかし、正直なところ、これを行う方が簡単で簡単です...

public String toDayOfWeek(Date date) {
    // Now you could extract the various values from the Date object
    // but those methods are deprecated...
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);

    return DateFormatSymbols.getInstance().getWeekdays()[cal.get(Calendar.DAY_OF_WEEK)];
}

したがって、2つの方法になります...

public String toDayOfWeek(String date) {
    String dayOfWeek = null;
    try {
        Date date = DateFormat.getDateInstance().parse(date);
        dayOfWeek = toDayOfWeek(date);
    } catch (ParseException exp) {
        dayOfWeek = date + " is an invalid date format";
    }
    return dayOfWeek;
}

public String toDayOfWeek(Date date) {
    // Now you could extract the various values from the Date object
    // but those methods are deprecated...
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);

    return DateFormatSymbols.getInstance().getWeekdays()[cal.get(Calendar.DAY_OF_WEEK)];
}
于 2012-10-19T06:50:09.680 に答える
1

カレンダーを使用できます。このコードを見ると、アイデアが得られます

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,2012);
cal.set(Calendar.MONTH,0);//Note that months start at 0 i.e. January is 0
cal.set(Calendar.DAY,1);

System.out.println(cal.get(Calendar.DAY_OF_WEEK)));
于 2012-10-19T04:55:43.307 に答える
1

最初に、args に実際に 3 つの要素があるかどうかを確認します。

   場合 (args.length == 3)
       // 計算する
     そうしないと
       System.out.println("使用法: java DateID <月> <日> <年>"):
于 2012-10-19T04:57:25.357 に答える
1

例のためにGUIが表示されていないと仮定します...

2 番目の問題については、JTextArea は JTextComponent から継承します。ここにsetText メソッドがあります。intではなく文字列を受け入れるため、おそらく次のようなことをしようとしています:

String.valueOf(d0);

d0 を文字列リテラル (println のものなど) に連結することもできると思います。

編集: setText は単にそのフィールドの値を設定するだけであることを覚えておいてください。テキストを取得する場合は、getText メソッドを使用して、指定した区切り文字で結果の文字列を分割する必要があります。結果は文字列の配列に格納されます。これを int に変換して、Calendar ala Abu の応答で使用できます。

于 2012-10-19T04:58:29.513 に答える