不幸的是,我相信我知道这个问题 - 我有一个不合适的支架,但是我查看了我的代码,这一切似乎都处于正常工作状态 - 我已经仔细研究了它并且找不到什么可以造成这个错误(当我按原样运行代码时,我得到了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);
}
}
答案 0 :(得分:0)
问题在于你的数组初始值设定项。
而不是:
dayNames = {"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
你应该:
dayNames = new String[]{"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"};
同样适用于monthNames
。
设置这些数组的方式只能在声明时使用。假设你需要在类的构造函数中设置它们,它们就不能这样设置。
并且
private String[] monthNames = new String[12];
private String[] dayNames = new String[7];
可以替换为:
private String[] monthNames;
private String[] dayNames;
除非您有另一个未来未设置它们的构造函数。 这是为了避免无用的分配,因为这些字段中的每一个都接收到在构造函数中创建的新数组。
答案 1 :(得分:0)
您应该将初始化更改为:
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"};
因为这是数组常量,必须在声明时初始化。此外,不需要默认构造函数,因为没有构造函数的类只调用默认构造函数。所以删除它以减少额外的编码。
答案 2 :(得分:0)
我在这里看到两个问题..
数组的索引从0开始,你的月和日变量从1而不是0开始。
你已经创建了一个String数组但是你正在改变你的参考资料Shlublu解释了这一点并提出了正确的答案。
List<Size> allSizes = param.getSupportedPictureSizes();
Camera.Size size = allSizes.get(0); // get top size
for (int i = 0; i < allSizes.size(); i++) {
if (allSizes.get(i).width > size.width)
size = allSizes.get(i);
}
//set max Picture Size
params.setPictureSize(size.width, size.height);