日期递增构造函数将无法编译

时间:2013-01-28 03:14:36

标签: java

程序应该提示用户输入日期,它会自动增加。这是我遇到麻烦的DateTest类。错误消息显示“无法在数组类型Date []”

上调用nextDay()

已更新

我摆脱了不必要的陈述。但现在我收到此错误消息,

“错误:在类Date中找不到主要方法,请将主方法定义为:    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);

                    }
                }
            }
        }
    }

}

3 个答案:

答案 0 :(得分:1)

你的意思是做下面的事吗?

newDate[counter].nextDay();  

编译器很清楚这个问题。 newDate是一个数组,您需要选择一个数组元素来调用该方法。

@ThaiTran已经遇到了实际问题。

您要两次定义相同的符号。如果它可以工作,我希望你想在第一个上调用该方法,但编译器认为你的意思是第二个。

Date newDate = new Date(11,27,2011);
....
Date [] newDate = new Date[arraySize];  

答案 1 :(得分:1)

了解更新后的错误

这是因为main方法必须位于公共类中,而公共类又与java文件的名称相同。因此,您必须将文件名设置为dateTest.java,然后将public访问权限设置为dateTest类。请注意,一个java文件中只有一个公共类

答案 2 :(得分: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类的类括号中......