我是一个初学者,有很多东西不太懂,帮我看一下,下面这个程序的问题,以及解决办法。谢谢。
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 max;
                  if(x>y) max=x; 
                  else max=y;
    这个max就不是。
      

  2.   

    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]); 
                 }
    ================================================================================
    我也碰过类似的问题,我觉得这是由于value这个数组可能还没有被加入元素的原因
     temp=selectMax(value[0],value[1]); 
    如这句中引用的value[0]和 value[1] 可能为空 因此应该在使用之前进行判断是否为空
      

  3.   

    有两个问题
    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]);
      

  4.   

    一般非静态变量在创建时,就有默认的初始化值啊~~为什么这里的double temp;一定要显示的初始化呢?还有,楼主的这个程序应该怎样输入才对?
    我输入三个数,显示的总是那句“输入不合法!”