我遇到错误,说我的int变量final可能没有初始化,但我认为我在if
语句中初始化了它。
import java.util.Scanner;
public class Fibo
{
static int fibNum(int num)
{
int finish;
if(num < 0)
{
finish = -1;
}
else if(num == 0 || num == 1)
{
finish = num;
}
else if(num > 1)
{
finish = fibNum(num-1) + fibNum(num-2);
}
return finish;
}//end fibNum
public static void main(String []args)
{
int num;
Scanner in = new Scanner(System.in);
num = in.nextInt();
fibNum(num);
System.out.println(" is the nth number in the fibbonaci sequence that you are looking for");
}//end main
}//end class
错误:
Fibo.java:20: error: variable finish might not have been initialized
return finish;
答案 0 :(得分:0)
您必须初始化变量。
变化:
int finish;
到
int finish = 0;
答案 1 :(得分:0)
虽然成员字段(变量)可以隐式初始化为默认值,但局部变量不能,因此您应该通过更改它来显式初始化它:
int finish;
到此:
int finish = 0;
答案 2 :(得分:0)
您必须声明返回变量。因为如果条件只能在调用方法时执行。
int finish = 0;
答案 3 :(得分:0)
局部变量不会获得默认值。它们的初始值未定义,没有通过某种方式赋值。在使用局部变量之前,必须初始化它们。
这就是你必须初始化局部变量的原因。
int finish = 0;
答案 4 :(得分:0)
是的,您必须在fibNum方法
中初始化int变量完成