错误:Java类中预期的错误类接口或枚举

时间:2015-11-07 06:37:32

标签: java curly-braces

不幸的是,我相信我知道这个问题 - 我有一个不合适的支架,但是我查看了我的代码,这一切似乎都处于正常工作状态 - 我已经仔细研究了它并且找不到什么可以造成这个错误(当我按原样运行代码时,我得到了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);
    }  

}

3 个答案:

答案 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)

我在这里看到两个问题..

  1. 数组的索引从0开始,你的月和日变量从1而不是0开始。

  2. 你已经创建了一个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);