我一直在尝试,但无法为以下的程序找出上述错误
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可能尚未初始化。请发送适当响应
如何解决问题错误声明:本地变量str可能尚未初始化
将您的StringBuffer
声明为:
StringBuffer str = new StringBuffer();
StringBuffer ptr = new StringBuffer();
通过这样做,您已经将str
和ptr
初始化为它们的默认值
这是因为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
。
由于循环
for(int i=0;i<t;i++)
可能不执行,str
可能是处的null
String prt=str.toString();
是。
StringBuffer str;
StringBuffer ptr;
首先初始化
StringBuffer str=new StringBuffer();
StringBuffer ptr=new StringBuffer();
只有在执行循环时才会进行初始化。如果t=0,则初始化永远不会发生。
您不能初始化数组中未定义的变量,因为它不确定您是否会进入数组。尝试在之前初始化它,
StringBuffer str=null; // and then go ahead