对于任意两个数字字符串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
答案 0 :(得分:1)
Solution.java:23:错误:变量c可能尚未初始化String d = Integer.toString(c); ^ 1个错误
您没有在循环前为c
分配值。编译器无法知道是否会进入该循环。
结论:您无需为c
分配值就可以达到该打印语句 。
可以轻松修复:
int c = 0;
并注意:您需要这样做,因为c是方法中的局部变量。默认情况下,这些选项不会被初始化(例如,与类的字段相反)。
除此之外:查看命名。您的代码非常难以理解,这仅仅是因为您过度使用了一个字符的名称。使用含义明确的名称,可以告诉您该变量的用途。