当前位置: 首页 > 知识库问答 >
问题:

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

戚均
2023-03-14

程序应该提示用户输入日期,它会自行递增。我遇到了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);

                    }
                }
            }
        }
    }

}

共有3个答案

轩辕鸿祯
2023-03-14

如果希望dateTestDateinternal class。。。

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-它是< code >静态的,2-它是公共的,3-它在< code>Date类的大括号内...

柴茂材
2023-03-14

为您更新的错误

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

相高谊
2023-03-14

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

newDate[counter].nextDay();  

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

@ThaiTran找到了实际问题。

您定义了两次相同的符号。如果它有效,我希望您想在第一个上调用该方法,但编译器认为您指的是第二个。

Date newDate = new Date(11,27,2011);
....
Date [] newDate = new Date[arraySize];  
 类似资料:
  • 问题内容: 您好,我试图在我创建的类的java中获取当前日期,但是一切都失败了。我已经在许多站点(例如http://www.mkyong.com/java/java- date-and-calendar-examples/)中 看到,日期构造函数没有参数,例如 现在在我的项目中,我尝试像这样使用它,但出现错误 构造函数Date()未定义 这怎么可能?到目前为止,我已经为您提供了完整的代码 我在Ec

  • 我从一个API调用中获得一个日期值为1598331600000 我正在尝试使用SimpleDateFormat将其转换为可读格式

  • 问题内容: 大家好,我正在尝试在选项卡中列出文本数据,这是我的方法 无法解析构造函数ArrayAdapter 的方法,这是我的主要活动。任何帮助将不胜感激,我仍然是一个noobie 。 问题答案: 更改 至 你可以在使用。

  • 第二个构造函数应该调用第一个构造函数,但却给了我“递归构造函数调用”错误。 我明白这个错误的意思,只是不明白递归在哪里。第一个contructor将作为参数,而应该是该类型的数组。我错过了什么? 多谢了。

  • 我在程序的某个部分遇到了问题,我将一个充当lambda函数的对象传递给另一个函数(我需要捕获一个常量this指针,这样我就不能使用实际的lambda)。这导致调用lambda的copy构造函数,该构造函数再次调用copy构造函数,最终堆栈溢出。我知道发生了什么,但我不知道复制构造函数为什么调用自己,也不知道如何解决这个问题。我复制了下面的问题。 编译器:MSVC 2010

  • 问题内容: 我想做的是将一个日期传递到Calendar中,以便它将日期格式设置为可与另一个构造函数一起使用。这样我以后可以使用日历提供的功能来使用它。 tostring方法。 日期:java.util.GregorianCalendar [time = ?, areFieldsSet = false,areAllFieldsSet = true,lenient = true 而不是日期:20/10