1

プログラムはユーザーに日付を入力するように求められ、それ自体で増加します。私が問題を抱えているのは DateTest クラスです。エラー メッセージには、「配列型 Date[] で nextDay() を呼び出せません」と表示されます。

更新しました

不要な発言はやめました。しかし、今、私はこのエラーメッセージを受け取っています.

「エラー: クラス Date に Main メソッドが見つかりません。main メソッドを次のように定義してください: public static void main(String[] args)」

メインメソッドをどこかに移動する必要がありますか?

import javax.swing.JOptionPane;

public class Date {

    private int month; // 1-12
    private int day; // 1-31 based on month
    private int year; // any year
    int value;

    public Date() {
        month = 1;
        day = 1;
        year = 1900;
    }

    public Date(int m, int d, int y) {
        month = m;
        year = y;
        day = d;
    }

    public String GetDate() {
        String Msg1 = month + "/" + day + "/" + year;
        JOptionPane.showMessageDialog(null, Msg1);
        return Msg1;
    }

    public void setMonth() {
        int value = Integer.parseInt(JOptionPane.showInputDialog("Enter Month:"));

        if (value > 1 && value < 13) // validate month  
        {
            month = value;
        } // check for leap year  
        else if (month == 2) {
            boolean isleap = true;
            if (year % 4 != 0) {
                isleap = false;
            } else {
                isleap = true;
            }

        } else // month is invalid  
        {
            String Message = "Month" + month + "Month must be 1-12";
            JOptionPane.showMessageDialog(null, Message);
        }
    }

    public void setDay() {
        int value2 = Integer.parseInt(JOptionPane.showInputDialog("Enter Day:"));
        int[] daysPerMonth = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// check if day in range for month
        if (value2 > 0 && value2 <= daysPerMonth[month]) {
            day = value2;
        }

        value = value2;
    }

    public void setYear() {
        int value3 = Integer.parseInt(JOptionPane.showInputDialog("Enter Year:"));
        year = value3;
    }

    public int getMonth() {
        return month;
    }

    public int getDay() {
        return day;
    }

    public int getYear() {
        return year;
    }

    public int nextDay() {
        int cDay = day + 1;
        if (value == cDay) {
            day = cDay;
        } else {
            day = 1;
        }
        {
            NextMonth();
        }
        return day;
    }

    public int NextMonth() {
        if (12 == month) {
            year++;
        }
        return month = 1;
    }

    public String toString() {

        return month + "/" + day + "/" + year;

    }

}

class dateTest {

    public static void main(String args[]) {
        Date newDate = new Date(11, 27, 2011);
        final int arraySize = 1;


        {
            for (int i = 0; i < arraySize; i++) {
                newDate.setDay();
                newDate.setMonth();
                newDate.setYear();
            }
            for (int counter = 0; counter < 4; counter++) {

                newDate.nextDay();

                {

                    String Message = "Incremented Date:" + newDate.toString();
                    {
                        JOptionPane.showMessageDialog(null, Message);
                        System.exit(0);

                    }
                }
            }
        }
    }

}
4

3 に答える 3

1

以下のことをするということですか?

newDate[counter].nextDay();  

コンパイラは問題についてかなり明確です。newDate配列の場合、メソッドを呼び出す配列の要素を選択する必要があります。

@ThaiTranは実際の問題にぶつかりました。

同じシンボルを 2 回定義しています。まったく機能する場合は、最初のメソッドでメソッドを呼び出したいと思いますが、コンパイラは 2 番目のメソッドを意味していると見なします。

Date newDate = new Date(11,27,2011);
....
Date [] newDate = new Date[arraySize];  
于 2013-01-28T03:16:31.293 に答える
1

更新されたエラーについて

これは、メイン メソッドがパブリック クラスに配置されている必要があるためです。パブリック クラスは、Java ファイルの名前と同じ名前です。そのため、ファイル名をdateTest.javaに設定してpublicから、dateTest クラスへのアクセスを設定する必要があります。1 つの Java ファイルには public クラスが 1 つしかないことに注意してください。

于 2013-01-28T03:33:48.253 に答える
0

dateTestと同じファイル内で作業したい場合は、それを内部クラスDateにすることができます...public static

public class Date {

    /** Your Date Class Here **/    

    public static class dateTest {

        public static void main(String args[]) {
            Date newDate = new Date(11, 27, 2011);
            final int arraySize = 1;


            {
                for (int i = 0; i < arraySize; i++) {
                    newDate.setDay();
                    newDate.setMonth();
                    newDate.setYear();
                }
                for (int counter = 0; counter < 4; counter++) {

                    newDate.nextDay();

                    {

                        String Message = "Incremented Date:" + newDate.toString();
                        {
                            JOptionPane.showMessageDialog(null, Message);
                            System.exit(0);

                        }
                    }
                }
            }
        }

    }

}

基本的に、1-それがstatic、2-それが公開され、3-それがクラスのクラス中括弧内にあることを確認してくださいDate...

于 2013-01-28T03:47:17.937 に答える