我一直在尝试这个,但无法弄清楚以下程序的上述错误
enter code here
import java.util.*;
import java.lang.*;
class mainfunction
{
public static void main(String args[])
{
StringBuffer str;
StringBuffer ptr;
Scanner input=new Scanner(System.in);
int t=input.nextInt();
for(int i=0;i<t;i++)
{
str=new StringBuffer(new StringBuffer(args[i]));
for(int j=0;j<t;j++)
{
for(int k=0;k>t;k++)
{
ptr=str.reverse();
if(str.equals(ptr))
{
break;
}
}
}
}
String prt=str.toString();
System.out.println(prt.length());
System.out.println(prt.charAt(prt.length())/2);
}
}
如何解决问题错误说明:
本地变量str可能尚未初始化。请发送 适当的回应
答案 0 :(得分:2)
如何解决问题错误说明:本地变量str可能尚未初始化
将您的StringBuffer
声明为:
StringBuffer str = new StringBuffer();
StringBuffer ptr = new StringBuffer();
通过这种方式,您已将str
和ptr
初始化为其默认值
答案 1 :(得分:1)
那是因为声明StringBuffer str;
未初始化。您只在有条件的for
循环内初始化它,如果条件不满足,可能不会执行循环,而str
未初始化。
这就是您在此行The local variable str may not have been initialised
上收到错误String prt=str.toString();
的原因。
将其初始化为null
或新StringBuffer
,以防for
循环条件不满足。
StringBuffer str = null; // Either this
StringBuffer str = new StringBuffer(); // or this
同样适用于ptr
。
答案 2 :(得分:0)
自循环
for(int i=0;i<t;i++)
可能无法执行,str
可能是null
String prt=str.toString();
答案 3 :(得分:0)
是
StringBuffer str;
StringBuffer ptr;
首先初始化
StringBuffer str=new StringBuffer();
StringBuffer ptr=new StringBuffer();
答案 4 :(得分:0)
你不能在数组中初始化未定义的变量,因为它不确定你是否会进入数组。尝试在之前初始化它,
StringBuffer str=null; // and then go ahead
答案 5 :(得分:0)
只有在执行循环时才会进行初始化。 如果t = 0,初始化永远不会发生。