java帮助中的命令行参数

时间:2011-02-23 22:55:27

标签: java command-line command-line-arguments

我想使用命令行参数来获取用户输入,而不是使用增强的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);

    }

}

}


以下是答案:

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]));



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




}

}


3 个答案:

答案 0 :(得分:4)

arrayLength必须是整数。因此

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

答案 1 :(得分:3)

记住考虑代码流程也很重要:

初始化数组。 您对数组中的值求和。

您从未向数组添加值,因此您将始终将一堆零加起来。

答案 2 :(得分:2)

您正在总结一个填充0.0的数组(因为这是默认值),而不是命令行参数。

如果要对参数求和,则必须迭代它们(= args数组),将每个参数转换为double,然后添加它们。您根本不需要double[]


编辑:(经过一些评论后)

在您的问题的示例代码中,您正在使用数组的增强型for循环,因此您似乎知道这样的循环是什么。所以,现在使用args数组而不是myArray。在循环内部,您执行Integer.parseInt(...)Double.parseDouble或类似操作,并将结果添加到sum变量中。

如果循环中需要多个语句,请使用{ ... }对它们进行分组。