关于out.print打印double的问题

问题描述:

[code="java"] <%
int num =101;

for(int i=0;i String a = request.getParameter("count"+i+"");
if(a!=null){
//out.print(a);
double aa = Double.parseDouble(a);
out.print(aa);
out.print("
");
aa +=i ;
}
}

    //out.print(aa);

%>[/code]

不用out.print(aa)的时候能够运行,但如果取消out.print(aa)的注释,则提示错误aa cannot be resolved。
请问这是为啥?

下边附上一组,没有累加的时候。aa的值
[code="java"]0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
11.0[/code]
[b]问题补充:[/b]
多谢各位,这个问题我以前没有思考过,今天遇到了,经各位指点,下次一定注意!

:x LZ代码问题多的很哦.

[code="java"] <%

int num =101;

double aa=0.0d; //定义到for外面解决作用域问题
for(int i=0;i String a =[color=red](String) [/color]request.getParameter("count"+i+""); //取值要转换类型的
if(a!=null){
//out.print(a);
[color=red] double a =0.0d;[/color] //定义接收每次的值得变量
a = Double.parseDouble(a);
out.print(a);
out.print("
");

[color=red] aa +=a ; [/color] //累加
}

}

     out.print(aa);  

%> [/code]

貌似LZ需要实现累加,LZ的代码是实现不了的哦.

[quote]不用out.print(aa)的时候能够运行,但如果取消out.print(aa)的注释,则提示错误[color=red]aa cannot be resolved[/color]。
请问这是为啥? [/quote]
作用域问题...
你aa是在for {if(){ aa...}}定义的.
而out.print(aa)的aa却在外面...当然会出错..

<%
int num =101;

for(int i=0;i<num;i++){
String a = request.getParameter("count"+i+"");

if(a!=null){
//out.print(a);

        double aa = Double.parseDouble(a);
                //你把变量aa定义在if(a!=null)语句里面,自然在这个if之外就不能访问啊
        out.print(aa);
        out.print("<br>");
        aa +=i ;
    }
}   

    //out.print(aa);

%>

修改下代码

[code="java"]

<%
int num =101;

double aa=0;
for(int i=0;i String a = request.getParameter("count"+i+"");
if(a!=null){
//out.print(a);
aa = Double.parseDouble(a);
out.print(aa);
out.print("
");
aa +=i ;
}
}

    out.print(aa);

%>

[/code]

很明显嘛,作用域的问题,简直就是送分题

aa定义在for循环里面了.外面怎么访问?