Error: error class interface or enum expected in Java class
Error: error class interface or enum expected in Java class
不幸的是,我相信我知道这个问题 - 我有一个不合时宜的支架,但我查看了我的代码,它似乎一切正常 - 我逐行仔细研究它但找不到是什么导致了这个错误(当我按原样 运行 代码时,我得到了 19 个错误)。谁能提供任何帮助?我还缺少其他东西吗?先感谢您。这是我的代码:
public class DateGenerator
{
private int month, day;
private String newDate;
private String[] monthNames = new String[12];
private String[] dayNames = new String[7];
public DateGenerator()
{
monthNames = {"Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
month = 1;
}
public void setMonth(int m)
{
month = m;
//System.out.println("XXXXXXXXXXXXXXXXXXXSETMONTH IS: " + month);
calculate();
}
public String getRandomDate()
{
return newDate;
}
private void calculate()
{
switch(month)
{
case 2: //Feb 1-28
day = (int)(Math.random()*28);
//System.out.println("MADE IT HERE1 and day is " + day);
break;
case 4: case 6: case 9: case 11:
day = (int)(Math.random()*30);
//System.out.println("MADE IT HERE2 and day is " + day);
break;
default:
day = (int)(Math.random()*31);
//System.out.println("MADE IT HERE3 and day is " + day);
break;
}
if(day == 0) day = 1;
int dayn = (int)(Math.random()*7);
//System.out.println("Dayn is " + dayn);
newDate = dayNames[dayn] + ", " + monthNames[month]+ " " + day;
//System.out.println(newDate);
}
}
问题出在你的数组初始值设定项上。
而不是:
dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
你应该有:
dayNames = new String[]{"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
monthNames
也是如此。
您设置这些数组的方式仅在声明时有效。假设您需要在 class 的构造函数中设置它们,它们不能那样设置。
和
private String[] monthNames = new String[12];
private String[] dayNames = new String[7];
可以替换为:
private String[] monthNames;
private String[] dayNames;
除非你有另一个构造函数不会在将来设置它们。
这是为了避免无用的分配,因为这些字段中的每一个都会收到在构造函数中创建的新数组。
您应该将初始化更改为:
private int month = 1, day;
private String newDate;
private String[] monthNames = {"Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
private String[] dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
因为这是数组常量,必须在声明时初始化。也不需要有默认构造函数,因为 class 没有构造函数只调用默认构造函数。所以删除它以减少额外的编码。
我在这里看到两个问题..
数组的索引从 0 开始,您的月份和日期变量从 1 而不是 0 开始。
您已经创建了一个字符串数组,但随后您正在更改您的参考 Shlublu 对此进行了解释并提出了正确答案。
private String[] monthNames = new String[12];
private String[] dayNames = new String[7];
public DateGenerator()
{
monthNames = {"Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
month = 1;
}
不幸的是,我相信我知道这个问题 - 我有一个不合时宜的支架,但我查看了我的代码,它似乎一切正常 - 我逐行仔细研究它但找不到是什么导致了这个错误(当我按原样 运行 代码时,我得到了 19 个错误)。谁能提供任何帮助?我还缺少其他东西吗?先感谢您。这是我的代码:
public class DateGenerator
{
private int month, day;
private String newDate;
private String[] monthNames = new String[12];
private String[] dayNames = new String[7];
public DateGenerator()
{
monthNames = {"Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
month = 1;
}
public void setMonth(int m)
{
month = m;
//System.out.println("XXXXXXXXXXXXXXXXXXXSETMONTH IS: " + month);
calculate();
}
public String getRandomDate()
{
return newDate;
}
private void calculate()
{
switch(month)
{
case 2: //Feb 1-28
day = (int)(Math.random()*28);
//System.out.println("MADE IT HERE1 and day is " + day);
break;
case 4: case 6: case 9: case 11:
day = (int)(Math.random()*30);
//System.out.println("MADE IT HERE2 and day is " + day);
break;
default:
day = (int)(Math.random()*31);
//System.out.println("MADE IT HERE3 and day is " + day);
break;
}
if(day == 0) day = 1;
int dayn = (int)(Math.random()*7);
//System.out.println("Dayn is " + dayn);
newDate = dayNames[dayn] + ", " + monthNames[month]+ " " + day;
//System.out.println(newDate);
}
}
问题出在你的数组初始值设定项上。
而不是:
dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
你应该有:
dayNames = new String[]{"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
monthNames
也是如此。
您设置这些数组的方式仅在声明时有效。假设您需要在 class 的构造函数中设置它们,它们不能那样设置。
和
private String[] monthNames = new String[12];
private String[] dayNames = new String[7];
可以替换为:
private String[] monthNames;
private String[] dayNames;
除非你有另一个构造函数不会在将来设置它们。 这是为了避免无用的分配,因为这些字段中的每一个都会收到在构造函数中创建的新数组。
您应该将初始化更改为:
private int month = 1, day;
private String newDate;
private String[] monthNames = {"Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
private String[] dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
因为这是数组常量,必须在声明时初始化。也不需要有默认构造函数,因为 class 没有构造函数只调用默认构造函数。所以删除它以减少额外的编码。
我在这里看到两个问题..
数组的索引从 0 开始,您的月份和日期变量从 1 而不是 0 开始。
您已经创建了一个字符串数组,但随后您正在更改您的参考 Shlublu 对此进行了解释并提出了正确答案。
private String[] monthNames = new String[12]; private String[] dayNames = new String[7]; public DateGenerator() { monthNames = {"Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"}; dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"}; month = 1; }