标题:各位看看有没有改进的可能
只看楼主
Heart→M鹏
Rank: 2
等 级:论坛游民
帖 子:80
专家分:94
注 册:2011-5-13
结帖率:83.33%
已结贴  问题点数:0 回复次数:3 
各位看看有没有改进的可能
程序代码:
package exception;
import javax.swing.JOptionPane;
public class Calc3 {
    public static void main(String[] args){
        double[] arr = new double[10];
        double temp = 0;
        double average = 0;
        double sum = 0;
        for (int i=0; i<arr.length; i++){
        try{
            String str = JOptionPane.showInputDialog(null, "请输入一个数");
            double j = Double.parseDouble(str);
            arr[i] = j;
        }
        catch (NumberFormatException ex){
            JOptionPane.showMessageDialog(null, "对不起,你输入的格式有误,请重新输入!!!");
            String str1 = JOptionPane.showInputDialog(null, "请再次输入一个数");
            double k = Double.parseDouble(str1);
            arr[i] = k;
        }
        }
        for (double e: arr){
            System.out.print(e +" ");
            sum = sum + e;
        }
        System.out.println();
        average = sum / 10;
        System.out.println("平均值 = " +average);
        for (int m=0; m<arr.length-1; m++){
            for (int n=0; n<arr.length-1-m; n++){
                if (arr[n] > arr[n+1]){
                    temp = arr[n];
                    arr[n] = arr[n+1];
                    arr[n+1] = temp;
                }
            }
        }
        System.out.println("最大值 = " +arr[arr.length-1]+ "最小值 = " +arr[0]);
    }
}
用JOptionPane输入10个double数值,分别是10个评委的亮分。如果输入的内容无法转换成为double,则重新出现输入框,并且输入框上面显示:对不起,您输入的格式有误,请您重新输入。最后显示最高分,最低分,平均分。
搜索更多相关主题的帖子: average 
2011-10-14 21:58
付政委
该用户已被删除
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽
2011-10-14 22:21
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:3 
程序代码:
import java.util.ArrayList;
import java.util.Collections;

import javax.swing.JOptionPane;


public class Calc3 {

    public double parseDou(String str) {
        double j = 0;
        try {
            j = Double.parseDouble(str);
        }
        catch(NumberFormatException ex) {
            JOptionPane.showMessageDialog(null, "对不起,你输入的格式有误,请重新输入!!!");
            String str1 = JOptionPane.showInputDialog(null, "请再次输入一个数");
            j = parseDou(str1);
        }
        return j;
    }

    public static void main(String[] args) {
        double[] arr = new double[10];
        double temp = 0;
        double average = 0;
        double sum = 0;
        Calc3 Calc = new Calc3();
        ArrayList<Double> list = new ArrayList<Double>();
        for (int i=0; i<arr.length; i++){
            String str = JOptionPane.showInputDialog(null, "请输入一个数");
            temp = Calc.parseDou(str);
            list.add(temp);
            sum += temp;
            System.out.print(temp +" ");
        }
        System.out.println();
        average = sum / 10;
        System.out.println("平均值 = " +average);
        Collections.sort(list);
        System.out.println("最大值 = " +list.get(list.size() - 1)+ "最小值 = " +list.get(0));
    }
}
2011-10-15 01:02
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:0 
解释一下我上面的代码:
1、对于输入格式的判断,按楼主的写法,如果在catch中,仍然输入不合法的数字,那么程序就over了,因为输入错误的次数无法预估,所以仅仅catch一次是不够的,所以我将转换数字单独作为一个方法,使用了递归。楼主这个错误是致命的,是一定要修正的
2、楼主没有必要先把数存起来,等所的数都存好以后,再循环数组,相加求和,可以一边存,一边加,这样会少一个求和的循环,提高效率
3、我把数组换成了ArrayList,仅仅为了偷懒,想直接使用java提供的排序方法,不想自己写排序的方法而已
2011-10-15 01:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-352480-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.063722 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved