开发者

CommandLine Arguments in java Help

I'm suppose to use Command-Line Arguments to take user input and than use an enhanced for loop to sum.

This is the error:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from double to 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 ];

    doubl开发者_如何学运维e 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);

    }

}

}

here is how it is so far:

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

    }

}

}


Here is the answer:

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




}

}



arrayLength must be an integer. Thus

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


It's also important to remember to think about the flow of your code:

You initialize an array. You sum the values in the array.

You never added values to the array, so you will always be summing a bunch of zeros.


You are summing up an array filled with 0.0 (as this is the default value), not the command line arguments.

If you want to sum the arguments, you have to iterate over them (=the args array), convert each argument to a double, and add these up. You don't need the double[] at all.


Edit: (after some comments)

In your example code of your question you are using an enhanced for-loop of an array, so it seems you know what such a loop is. So, now use the args array instead of your myArray there. Inside the loop, you do the Integer.parseInt(...) or Double.parseDouble or similar, and add the result to your sum variable.

If you need more than one statement in the loop, use { ... } to group them.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜