程序应该提示用户输入日期,它会自动增加。这是我遇到麻烦的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);
}
}
}
}
}
}
答案 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
类的类括号中......