有人可以告诉我这段代码(Java)中发生了什么吗?

时间:2020-03-05 19:01:27

标签: java

下午好,

我是一名学生,我想知道我是否了解此代码的工作原理。 我认为程序至少接受两个必须为整数的参数,执行后将返回一个新字符串。如果这些参数的总和的值为“ 0”,则由于参数数量无效,它将显示此消息,因为未采取任何措施。 但是,如果参数的数字与“ 0”不同,则“ parseDouble”方法将返回第一个参数(参数0)的值的两倍,并且可以通过“ for”循环找到以下参数的总数。 接下来,“ parseDouble”方法再次查找循环中计算出的总参数的两倍,并且运算符“ * =”将此值乘以第一个参数的两倍。 使用'Math.pow'方法,将第一个参数的值提高为第二个参数的幂。在这种情况下,请将第一个参数加倍以将总参数除以1.0。 (我不知道'str.append(result +“ \ n”);'是什么意思!)! 如果您尝试写一个单词,该程序将检测到它并再次返回错误消息,因为仅接受整数。 最终,最终结果将被打印为控制台上唯一可见的结果。 是这样吗?


    public static void main(String[] args){
        double result = 0;      
        int  i= 0, length = args.length;
        StringBuilder str = new StringBuilder();

        if(length==0){
            System.err.println("Number of arguments is not correct! \nWrite: java Ex1 <double>+");
        }else{
            try {
                result = Double.parseDouble(args[0]);

                for (i = 1; i < length; i++) {
                    result *= Double.parseDouble(args[i]); 
                }
                result = Math.pow(result, 1.0 / length); 
                str.append(result+"\n");



            } catch (NumberFormatException e) {
                    System.err.println("Argument <<" + args[i] + ">> must be a double!");
                    System.exit(1);
            }
            System.out.print(str.toString());

        }
    }   
}```

1 个答案:

答案 0 :(得分:1)

此代码计算命令行参数的几何平均值:https://en.m.wikipedia.org/wiki/Geometric_mean