Java中的斐波那契Word系列

时间:2019-05-28 15:06:33

标签: java

对于任意两个数字字符串A和B,我们将Fa,b定义为序列(A,B,AB,BAB,ABBAB,...),其中每个术语是前两个的串联。

此外,我们定义Da,b(n) 是Fa,b的第一项中的第n个数字,至少包含

n位数字。

示例:

让A = 1415926535 ,B = 8979323846。我们希望找到Da,b(35)

,例如。

Fa,b的前几项是:

1415926535 8979323846 141592653589793233846 897932384614159265358979323846 14159265358979323846897932384614159265979323846

那么Da,b(35)是第五个学期的第35位数字,

9。

给你 q三元组(A,B,n)。对于所有这些人

Da,b(n)。

输入格式

每个测试文件的第一行包含一个整数 q是三元组的数量。然后是q行,每行包含两个十进制数字字符串a和b,以及正整数n。

输出格式

精确打印q 每行上都有一个小数位数:对应的三元组的Da,b(n)值。

public void fibo(String a,String b,int n){
    String n1=Integer.toString(n);
    char n2;
    n2=n1.charAt(1);
    int n3=Character.getNumericValue(n2);
    String c;
    for(int i=2;i<n3;i++){
        c=a+b;
        System.out.printf(c+" ");
        a=b;
        b=c;
    }

    System.out.println(c.charAt(n));
}

编译消息

Solution.java:26:错误:变量c可能尚未初始化         System.out.println(c.charAt(n));                            ^ 1个错误

退出状态

1

1 个答案:

答案 0 :(得分:1)

  

Solution.java:23:错误:变量c可能尚未初始化String d = Integer.toString(c); ^ 1个错误

您没有在循环前为c分配值。编译器无法知道是否会进入该循环。

结论:您无需为c分配值就可以达到该打印语句

可以轻松修复:

int c = 0;

并注意:您需要这样做,因为c是方法中的局部变量。默认情况下,这些选项不会被初始化(例如,与类的字段相反)。

除此之外:查看命名。您的代码非常难以理解,这仅仅是因为您过度使用了一个字符的名称。使用含义明确的名称,可以告诉您该变量的用途。