我想使用命令行参数来获取用户输入,而不是使用增强的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);
}
}
}
答案 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
变量中。
如果循环中需要多个语句,请使用{ ... }
对它们进行分组。