Java 在方法外声明的数组(在类级别),而在方法内指定的值不';不行。为什么?

Java 在方法外声明的数组(在类级别),而在方法内指定的值不';不行。为什么?,java,Java,*我做了一个数组。。在类级别,但在方法中为其赋值。。但是出于某种原因。。它放弃了一个错误。。 然后,当我在同一个方法中执行数组声明和赋值时。。 一切都很顺利!!为什么呢?我在类级别声明了数组。。所以它有类范围,对吗??那么为什么我不能在方法中为它赋值呢??我完全糊涂了:/* public class VacationScale{ 公众假期[]天; 天数=新整数[7]; public void setVacationScale(){ 天数[0]=10天; 天数[1]=15天; 天数[2]=15天;

*我做了一个数组。。在类级别,但在方法中为其赋值。。但是出于某种原因。。它放弃了一个错误。。 然后,当我在同一个方法中执行数组声明和赋值时。。 一切都很顺利!!为什么呢?我在类级别声明了数组。。所以它有类范围,对吗??那么为什么我不能在方法中为它赋值呢??我完全糊涂了:/*

public class VacationScale{
公众假期[]天;
天数=新整数[7];
public void setVacationScale(){
天数[0]=10天;
天数[1]=15天;
天数[2]=15天;
天数[3]=15天;
天数[4]=20天;
天数[5]=20天;
天数[6]=25天;
}
公共无效显示休假天数(整年服务){
如果(服务年数>=0和服务年数6){
System.out.println(“员工的服务年限为”
+服务年限+“因此员工有资格:25”
+“假期”);
}
否则{
System.out.println(“服务年限无效”);
}
}
}

命令提示符上显示的错误是--
预期标识符

public class VacationScale{

    public int [] days;

    days = new int [7];
该代码段似乎是导致您出现问题的原因。您不能在方法之外为
指定新值

也许您可以尝试在
setVacationScale()的开头分配它:


days=newint[7]是方法之外的无效代码。改为写:

public int [] days = new int [7];
它将声明和初始化数组

除此之外,没有必要使用
setVacationScale()
方法,因为它似乎是硬编码的。相反,您可以初始化数组以获得以下值:

public int [] days = new int[] {10, 15, 15, 15, 20, 20, 25};
要提供更多提示,如果数组仅由类的方法使用,则在类外部公开对该数组的访问是不明智的-如果是这种情况,请将其访问修饰符更改为
private
。只要数组只初始化一次,就可以将其设置为final

private final int [] days = new int[] {10, 15, 15, 15, 20, 20, 25};

此语句不能放入类声明中:

days = new int[7];
将其更改为内联初始化:

public int[] days = new int[7];
或者将其放在初始化块中:

{
    days = new int[7];
}

或者将其移动到构造函数中。

看在上帝的份上!在发布代码片段之前格式化它们!实际上,所有IDE都可以通过单击菜单项或其他方式格式化源代码!此外,这是工作代码还是不工作的代码?如果你想在几天内保持全局性,那么就这样做-
public int[]days=new int[7]这是Java的规则。赋值是一条语句,语句作为方法的一部分运行。方法外的语句对编译器没有意义。为什么它在方法外无效?你的意思是,我将始终必须声明数组的大小,然后在同一个方法中分配它的值吗??:/否,语句在方法外部无效。但是,正如这个问题的其他答案所示,还有许多其他方法可以声明数组的大小并分配其值。。。明白逻辑;)为什么它在方法之外无效?你的意思是,我将始终必须声明数组的大小,然后在同一个方法中分配它的值吗??:/@我-格雷格似乎已经解释了这一点-如果你仍然需要帮助,请告诉我。
public int[] days = new int[7];
{
    days = new int[7];
}