簡體   English   中英

java幫助中的CommandLine參數

[英]CommandLine Arguments in java Help

我想使用命令行參數來獲取用戶輸入,而不是使用增強的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);
    }




}

}


arrayLength必須是整數。 從而

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

記住考慮代碼流程也很重要:

您初始化一個數組。 您對數組中的值求和。

您從未向數組添加值,因此您將總是將一堆零相加。

您正在總結一個填充0.0的數組(因為這是默認值),而不是命令行參數。

如果要對參數求和,則必須迭代它們(= args數組),將每個參數轉換為double,然后添加它們。 你根本不需要double[]


編輯:(經過一些評論)

在您的問題的示例代碼中,您正在使用數組的增強型for循環,因此您似乎知道這樣的循環是什么。 所以,現在使用args數組而不是myArray 在循環內部,執行Integer.parseInt(...)Double.parseDouble或類似操作,並將結果添加到sum變量中。

如果循環中需要多個語句,請使用{ ... }對它們進行分組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM