Java中的命令行参数帮助

3
我应该使用命令行参数来获取用户输入,然后使用增强型for循环求和。
这是错误信息:
线程“main”中的异常java.lang.Error:未解决的编译问题: 类型不匹配:无法将double转换为int
public class EnhanceForLoop {


public static void main(String[] args) {
    // TODO Auto-generated method stub

    if(args.length !=5)
        System.out.println(" please enter no more than 4 numbers");
    else
    {

    double sum; 
    double arrayLength = Double.parseDouble(args[0]);
    double [] myArray = new double [ arrayLength ];

    double value = Double.parseDouble((args[1]));
    double counter = Double.parseDouble((args[2]));


    for(double num: myArray)
      sum += num;


    System.out.printf("The sum is %f ", sum);

    }

}

}

这是目前的代码: public class EnhanceForLoop {
public static void main(String[] args) {
    // TODO Auto-generated method stub

    if(args.length !=5)
        System.out.println(" please enter no more than 4 numbers");
    else
    {

    double sum = 0.0; 

    int arrayLength = Integer.parseInt(args[0]);
    double [] myArray = new double [ arrayLength ];

    double num1 = Double.parseDouble((args[1]));
    double num2 = Double.parseDouble((args[2]));
    double num3 = Double.parseDouble((args[3]));
    double num4 = Double.parseDouble((args[4]));
    double num5 = Double.parseDouble((args[5]));


    for(double num: myArray)
      sum += num;


    System.out.printf("The sum is %f ", sum);

    }

}

这是一个代码片段,它没有明确的语义或翻译。该代码段使用了Java编程语言的语法结构,可能需要上下文才能充分理解其含义。
public static void main(String[] args) {
    // TODO Auto-generated method stub

    if(args.length !=5)
        System.out.println(" please enter no more than 4 numbers");
    else
    {

    double sum = 0.0; 

    int arrayLength = Integer.parseInt(args[0]);
    double [] myArray = new double [ arrayLength ];

    double num1 = Double.parseDouble((args[1]));
    double num2 = Double.parseDouble((args[2]));
    double num3 = Double.parseDouble((args[3]));
    double num4 = Double.parseDouble((args[4]));



    for(String s: args){
        sum += Double.parseDouble(s);
    }
      System.out.println("Sum: "+sum);
    }




}

}



除非arrayLength是整数,否则无法使用new double[arrayLength]创建数组。 - Chris Nash
现在,您可以从解决方案中删除除循环和之后的System.out.println之外的所有多余代码。 - Paŭlo Ebermann
3个回答

4

arrayLength必须是一个整数。因此

int arrayLength = Integer.parseInt(args[0]);
double [] myArray = new double [ arrayLength ];

在这一行中:double [] myArray = new double [ arrayLength ]; 数组的构造函数只接受int作为参数。将其强制转换为int。 - hooch
谢谢,我修复了,但不幸的是另一个问题出现了:当我编译时,总和为0.000000。 - Mugetsu

3

记住要考虑代码的流程:

你需要初始化一个数组。 然后对数组中的值求和。

如果你没有向数组中添加数值,那么你将永远只会对一堆零进行求和。


你能帮我使用增强型循环添加吗? - Mugetsu

2
你正在对一个填充有0.0的数组求和(因为这是默认值),而不是命令行参数。
如果你想对参数求和,你需要遍历它们(即args数组),将每个参数转换为double类型,并将它们相加。你根本不需要double[]
编辑:(经过一些评论后)
在你的问题的示例代码中,你使用了增强型for循环,所以似乎你知道这样的循环是什么。现在使用args数组代替你的myArray。在循环内部,你可以使用Integer.parseInt(...)Double.parseDouble等方法,将结果添加到你的sum变量中。
如果你需要在循环中使用多个语句,请使用{ ... }来将它们分组。

公共静态无返回值主函数(String[] args) { int 总和; int 数字1 = Integer.parseInt(args[0]); int 数字2 = Integer.parseInt(args[1]); 总和 = 数字1 + 数字2; System.out.printf("总和为 %d ", 总和); }} - Mugetsu
@Mugetsu:不要在评论中添加代码(这里无法阅读),请将其添加到您的问题中(如果需要理解它)- 它有一个编辑链接。 - Paŭlo Ebermann
我应该使用增强型循环来计算数字总和,当我存储数字时,我知道如何做: 代码: int sum = 0; for(String arg : args){ sum += Integer.parseInt(arg); } System.out.printf("The sum is %d ", sum); - Mugetsu
我该如何使用args数组? - Mugetsu
@Mugetsu: 把它放在你现在使用myArray的地方。 - Paŭlo Ebermann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接