首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-01-28 
关于“可能未初始化变量”错误的原因我是一个初学者,有很多东西不太懂,帮我看一下,下面这个程序的问题,以及

关于“可能未初始化变量”错误的原因
我是一个初学者,有很多东西不太懂,帮我看一下,下面这个程序的问题,以及解决办法。谢谢。
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]);

热点排行