【问题标题】:CommandLine Arguments in java Helpjava帮助中的命令行参数
【发布时间】:2011-07-03 04:03:50
【问题描述】:

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

    }

}

}

目前情况如下:

公共类 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);

    }

}

}


答案如下:

公共类 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);
    }




}

}


【问题讨论】:

  • 你不能用new double[arrayLength]创建一个数组,除非arrayLength是一个整数。
  • 所以,现在您可以从解决方案中删除多余的代码,除了循环和后面的System.out.println

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


【解决方案1】:

arrayLength 必须是整数。因此

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

【讨论】:

  • 在这一行: double [] myArray = new double [ arrayLength ];数组的构造函数只接受整数作为参数。将其转换为 int
  • 谢谢,我解决了这个问题,但不幸的是出现了另一个问题:当我编译时总和是 0.000000
【解决方案2】:

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

你初始化一个数组。 你对数组中的值求和。

您从未向数组添加值,因此您将始终对一堆零求和。

【讨论】:

  • 你能帮我添加增强 for 循环吗
【解决方案3】:

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

如果要对参数求和,则必须遍历它们(=args 数组),将每个参数转换为双精度,然后将它们相加。你根本不需要double[]


编辑:(在一些 cmets 之后)

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

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

【讨论】:

  • [code]public static void main(String[] args) { int sum; int num1 = Integer.parseInt(args[0]); int num2 = Integer.parseInt(args[1]);总和 = 数字 1 + 数字 2; System.out.printf("总和是 %d", sum); } }[/code]
  • @Mugetsu:不要在评论中添加代码(此处不可读),将其添加到您的问题中(如果是需要理解它) - 它有一个编辑链接。
  • 我应该使用增强 for 循环来对数字求和,并且我知道在存储数字时该怎么做:`code' int sum; int num1 = Integer.parseInt(args[0]); int num2 = Integer.parseInt(args[1]);总和 = 数字 1 + 数字 2; System.out.printf("总和是 %d", sum);
  • 如何使用 args 数组?
  • @Mugetsu:把它放在你现在使用myArray的地方。
猜你喜欢
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
相关资源
最近更新 更多