读书人

关于“可能未初始化变量”异常的原因

发布时间: 2012-01-28 22:06:13 作者: rapoo

关于“可能未初始化变量”错误的原因
我是一个初学者,有很多东西不太懂,帮我看一下,下面这个程序的问题,以及解决办法。谢谢。
import java.io.*;
public class Maximum0{
public static double selectMax(double x,double y){
double max;
if(x> y) max=x;
else max=y;
return max;
}

public static void main(String[] args){
double[] value=new double[3];
try{
System.out.println( "输入数字: ");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String[] inputLine=new String[3];
for(int i=0;i <3;i++)
{inputLine[i]=in.readLine();
value[i]=Double.valueOf(inputLine[i]).doubleValue();
}
double temp;
for(int i=0;i <3;i++)
{
temp=selectMax(value[0],value[1]);
temp=selectMax(selectMax(value[i],value[i+1]),value[i+2]);
}
System.out.println( "最大的数为 "+temp);
}catch(Exception exc){
System.out.println( "\7输入不合法! ");
return; }

}


}

[解决办法]
有两个问题
1, double temp; temp这个变量需要初始化,可以写成这样 double temp=0;
2, for(int i=0;i <3;i++)
{
temp=selectMax(value[0],value[1]);
temp=selectMax(selectMax(value[i],value[i+1]),value[i+2]);
}
有问题
如果用循环,就不要这句 temp=selectMax(selectMax(value[i],value[i+1]),value[i+2]);
当i为2时,i+2=4,数组只有3个,越界了.
改成:
for(int i=0;i <2;i++){
temp=selectMax(value[i],value[i+1]);

//temp=selectMax(selectMax(value[0],value[1]),value[2]);
}
不用循环就temp=selectMax(selectMax(value[0],value[1]),value[2]);

读书人网 >J2SE开发

热点推荐