初始化数组出错

先上代码

package p1;

public class Second {
    /*
本代码的错误在什么地方?
注意代码运行的顺序
主方法调用类的其他方法?
    */ 
    int[]a = new int[100];
    a[1] = 1;
    int fib(int n){
        if(n ==0){
            return 0;//递归到0
        }
        else if(a[n] !=0){//n值已经写入了
            return a[n];
        }
        else{//计算N值写入
            a[n] = fib(n-1)+fib(n-2);
            return a[n] ;
        }
    }
    public static void main(String[] args) {
    //a[1] = 1;//为什么初始化只能放在这里面
    //System.out.println(new Second().fib(5));
    System.out.println(new Second().fib(6));
    }
}

代码的第二行报错了,本意是想初始化这个数组的第二项,提示

Syntax error on token ";", { expected after this tokenJava(1610612967)

我的猜测是,考虑程序的执行顺序,从入口main进入, 接着调用fib,在fib中会对数列的值进行读取和写入,但第二行是一个可执行的操作,应该放在方法里?

实验一下

public class Student{
    int a =1;
    a = a+1;
    public void xxx(){
        System.out.println(a+1);//不传参数直接使用
    }
    public static void main(String[] args) {
        new Student().xxx();
    }
}   

果然,继续报错,错误稳定,原因只是猜测,欢迎探讨。

2022.4.22

另一个解决办法:使用static关键字定义变量,然后使用static{}进行初始化,这里可以看出new 以及static的”可执行性“ 

一个问题,在一个java文件中,可以定义多个类吗?

尝试一下

package TEST.TEST;

public class Qidong {
    static int a = 1;
    a = a+1;
   
    public static void main(String[] args) {
        System.out.println(new Qidong().a);
    }
}
public class Qidong1{
    
}

 提示:

TEST.TEST.Qidong1

The public type Qidong1 must be defined in its own file

 也就是说:一个Java文件只能定义一个类(内部类除外)

构造方法是用来初始化的。但是例如我只想初始化数组里的某个值呢?当然以上已解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值