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

时间:2014-03-17 07:39:29

标签: java

我一直在尝试这个,但无法弄清楚以下程序的上述错误

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可能尚未初始化。请发送   适当的回应

6 个答案:

答案 0 :(得分:2)

如何解决问题错误说明:本地变量str可能尚未初始化

将您的StringBuffer声明为:

StringBuffer str = new StringBuffer();
StringBuffer ptr = new StringBuffer();

通过这种方式,您已将strptr初始化为其默认值

答案 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,初始化永远不会发生。