public class Demo1 {    public static void main (String[] args) {
     float a[]=new float[5];
     float sum =0;
     for(int i=0;i<a.length;i++){
     a[i]=Float.parseFloat(args[i]);
     System.out.println ("第"+(i+1)+"门课程的成绩:"+a[i]);
     sum=sum+a[i];
     }
     System.out.println ("总成绩是:"+sum);
     float avg=sum/a.length;
     System.out.println ("平均成绩是:"+avg);
    }
    
    
}
请问上面代码会出现什么异常?数字格式异常?算术异常?数组下标越界?
求解析

解决方案 »

  1.   

    数字格式会出现异常, 字符串必须能转换为float,  当然也必须是5个float, 还有就是后面除数有可能为0,这也不行!
      

  2.   

    public class Demo1{    public static void main(String[] args) {
            if(args != null && args.length == 5)    {
                float a[]=new float[5];
                float sum =0;            try {
                    for(int i=0;i<a.length;i++){
                      a[i]=Float.parseFloat(args[i]);
                      System.out.println ("第"+(i+1)+"门课程的成绩:"+a[i]);
                      sum=sum+a[i];
                       }
                      System.out.println ("总成绩是:"+sum);
                      float avg=sum/a.length;
                      System.out.println ("平均成绩是:"+avg);
                    } catch (NumberFormatException e) {
                       e.printStackTrace();
                   }
                
            }else {
                System.out.println("你输入的数据不正确,输入数据的格式样例为:67.5 67.6 88.6 90.5 99");
            }
        }
    }
      

  3.   

    这个需要传递5个值,否则会引起数组下标越界错误。
    对于输入的值如果出现符号或者是不能转化为float的字符串时,会出现数字格式错误。