有个过程如下
String a[];
String b = "a:4,n:8,t:50";
String vv = "";
if(){
a = b.split(",");
}
for(){
vv = "bbb" + a[i];
}
类似上面的过程在编译的时候报错,说是a 数组没有初始化.怎么解决这样的错误呢?
String a[];
String b = "a:4,n:8,t:50";
String vv = "";
if(){
a = b.split(",");
}
for(){
vv = "bbb" + a[i];
}
类似上面的过程在编译的时候报错,说是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);
是可以编译并且运行的
for(int i=1;i<a.length; i++){
vv = "bbb" + a[i];
}
我是在Jbuilder2005中使用的,编译的时候提示,
"userpricemanageform.jsp": variable UsedRate3 might not have been initialized
{
a = b.split(",");
}
--------------------
这个能保证a能被初始化了
不知道你的jsp里是怎么写的,代码贴出来看看
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);
}
%>
把这句打出来看看。传过来的值有没有问题
因为你给他赋值的时候是在某个条件下,如果这个条件不成立当然就是没有初始化了。
IF当然是根据条件,你看看你在那里怎么改吧。
如果你这样写:
String str;
if( 1==1 ){
str="";
}
if( 1== 1 ){
System.out.println(str);
}
虽然条件一样,但是java编译器不可能知道你这两个条件是一致的,提示没初始化
funcreal(为中华之崛起而编程)
ChDw(米)
两位说的对,因为有了IF,所以,会有问题,设为NULL就可以了.
fzycool(风之羽)
说的也没错,只是我在开始的时候不知道数组的长度,所以,没有办法初始化长度.