有个过程如下
String a[];
String b = "a:4,n:8,t:50";
String vv = "";
if(){
  a = b.split(",");
}
for(){
  vv = "bbb" + a[i];
}
类似上面的过程在编译的时候报错,说是a 数组没有初始化.怎么解决这样的错误呢?

解决方案 »

  1.   

    String[] a = new String[]{"a","b"};String[] a = b.split(",");
      

  2.   

    而且你的程序是正确的,可以运行的啊        String a[];
            String b = "a:4,n:8,t:50";
            String vv = "";
            if(true)
            {
                a = b.split(",");
            }
            for(int j=0;j<a.length;j++)
            {
                vv = "bbb" + a[j];
            }
            
            System.out.println(vv);
      

  3.   

    我的测试环境是jdk1.5
    是可以编译并且运行的
      

  4.   

    数组a不能设初值,因为b是不定长的,后面的循环还要用到这个变量,如何解决呢?
    for(int i=1;i<a.length; i++){
      vv = "bbb" + a[i];
    }
      

  5.   

    如果b 不是常量,而是变量呢?
    我是在Jbuilder2005中使用的,编译的时候提示,
    "userpricemanageform.jsp": variable UsedRate3 might not have been initialized
      

  6.   

    if(true)
            {
                a = b.split(",");
            }
    --------------------
    这个能保证a能被初始化了
    不知道你的jsp里是怎么写的,代码贴出来看看
      

  7.   

    <%
          String EleTypeID2 = "";
          String BasicPrice2 = "";
          String UsedRate2 = "";
          String UsedRate3[];
          String SubUseRate[];
          ResultSet rs = UserPriceBean.getAllUserPriceInfo();
          //  rs.next();
          out.println("<table align=\"top\" border = '1' cellspacing='0' cellpadding='0' border='0' class='table6'>");
          out.println("<tr bgcolor = '888899'><th>用户电价编号</th><th>用户电价</th></tr>");
          while (rs.next())
            out.println("<tr><td><a href=\"" + Tools.getVirtualDirPath(request) + "/main/sys/userpricemanageform.jsp?EleTypeID=" + rs.getString("EleTypeID") + "\">" + rs.getString("EleTypeID") + "</a></td><td><a href=\"" + Tools.getVirtualDirPath(request) + "/main/sys/operatormanageform.jsp?operatorID=" + rs.getString("BasicPrice") + "\">" + rs.getString("BasicPrice") + "</a></td></tr>");
          rs.close();
          SybaseManager.closeStatement(rs);
          out.println("</table>");
          if (request.getParameter("EleTypeID") != null) {
            UserPriceBean.getUserPriceInfo(Tools.getISOStr(request.getParameter("EleTypeID")));
            EleTypeID2 = UserPriceBean.getEleTypeID().trim();
            BasicPrice2 = UserPriceBean.getBasicPrice().trim();
            UsedRate2 = UserPriceBean.getUsedRate().trim();
            UsedRate3 = UsedRate2.split(",");
          }
        %>
        </td>
        <td width="57%" scope="col">
        <form name="form1" method="post" action="checkuserpricemanage.jsp">
          <p align="center">        用户电价编号
            <input name="EleTypeID" type="text" value="<%=EleTypeID2%>" maxlength="180">
          <%
            if (UsedRate2 != "" && UsedRate2 != null) {
              int inputcount=0;
              String EleTypeNames = "";
              for (int i = 0; i < UsedRate3.length; i++) {
                SubUseRate = UsedRate3[0].split(":");
                if (EleTypeNames != "") {
                  EleTypeNames = EleTypeNames + ",";
                }
                EleTypeNames = EleTypeNames + "\"" + SubUseRate[0] + "\"";
                inputcount++;
                out.println("<p align=\"center\">" + SubUseRate[0] + " <input name=\"EleTypeName" + inputcount + "\" type=\"text\" value=\"" + SubUseRate[1] + "\" maxlength=\"180\">");
                out.println("<input type=\"hidden\" name=\"EleTypeNameValue"+inputcount+"\" value=\""+rs.getString("EleTypeName")+"\">");
              }
              String StrSQL = "select EleTypeName from PriceType where EleTypeName not in ("+EleTypeNames+")";
              rs = SybaseManager.execSQLQuery(StrSQL);
              while(rs.next()){
                inputcount++;
                out.println("<p align=\"center\">" + rs.getString("EleTypeName") + " <input name=\"EleTypeName" + inputcount + "\" type=\"text\" value=\"0\" maxlength=\"180\">");
                out.println("<input type=\"hidden\" name=\"EleTypeNameValue\" value=\""+rs.getString("EleTypeName")+"\">");
              }
              out.println("<input type=\"hidden\" name=\"inCount\" value=\""+inputcount+"\">");
              rs.close();
              SybaseManager.closeStatement(rs);
            }
          %>
      

  8.   

    UsedRate2 = UserPriceBean.getUsedRate().trim();----------------------------
    把这句打出来看看。传过来的值有没有问题
      

  9.   

    String SubUseRate[] = null; 你必须都指定它初始化为null,这样编译器才能通过
      

  10.   

    String UsedRate3[]=null;
    因为你给他赋值的时候是在某个条件下,如果这个条件不成立当然就是没有初始化了。
      

  11.   

    对,就是IF那里的问题,如果没有执行IF,那么数组也就没有被出始化。
    IF当然是根据条件,你看看你在那里怎么改吧。
      

  12.   

    方法里的变量必须初始化,
    如果你这样写:
    String str;
    if( 1==1 ){
        str="";
    }
    if( 1== 1 ){
    System.out.println(str);
    }
    虽然条件一样,但是java编译器不可能知道你这两个条件是一致的,提示没初始化
      

  13.   

    很简单,在你定义的时候,String a[] = new String[数组长度];就可以了
      

  14.   

    谢谢各位解答
     funcreal(为中华之崛起而编程)
    ChDw(米) 
    两位说的对,因为有了IF,所以,会有问题,设为NULL就可以了.
    fzycool(风之羽)
    说的也没错,只是我在开始的时候不知道数组的长度,所以,没有办法初始化长度.