错误:局部变量str(我声明的字符串)可能尚未初始化



我一直在尝试,但无法为以下的程序找出上述错误

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();

通过这样做,您已经将strptr初始化为它们的默认值

这是因为StringBuffer str;被声明为未初始化。您只能在for循环中初始化它,这是有条件的,如果条件不满足,则循环可能不会执行,从而使str未初始化。

这就是为什么在这一行得到错误The local variable str may not have been initialisedString 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

最新更新