簡體   English   中英

如何調用和聲明帶有可變數量參數的方法?

[英]How to call and declare a method with a variable amount of arguments?

我無可救葯地試圖使用(int = amountCoefficients)數量的參數來調用一個函數,並使用該數量的參數來聲明一個函數。

更難的是,例如,amountCoefficients = 5,則意味着存在一個由5個塊組成的數組,每個塊都有一個值(雙精度)。 因此,第一個參數必須等於該數組的第一個塊的值,第二個參數必須等於該數組的第二個塊的值,依此類推。

事先我們不知道需要多少個參數,因為這取決於用戶填寫的雙精度數,因此amountCoefficients可以等於2、4或任何其他正整數。

我對Java很陌生,我真的不知道該怎么做。 正如您在下面看到的那樣,我嘗試使用for循環進行操作,但我認為這不起作用。

public class Interpol {

  public static void main(String []args) {

    Scanner scanner = new Scanner(System.in);

        //acquire user input (polynomial coefficients and interval values x1 and x2)
        ArrayList<Double> polynomialCoefficients = new ArrayList<Double>();
        int amountCoefficients = 0;
        while (scanner.hasNextDouble()) {
            polynomialCoefficients.add(scanner.nextDouble());
            amountCoefficients++;
        }
        String in = scanner.next();
        double x1 = scanner.nextDouble();
        double x2 = scanner.nextDouble();

        //call method f to determine the polynomial function
        int i = 0;
        for (i = 0; i < amountCoefficients; i++) {
        f
        }

        //call method findaroot to determine the root


        //print result

  }

}

public static double f(double x) {
//function of which a root is to be found
}

您可以創建一個采用列表或數組的方法。 然后,該方法可以使用List.size()和array.length來處理每個對象。

public static void main(String[] args){
    ArrayList<Double> polynomialCoefficients = new ArrayList<Double>();

    // get data
    ...

    process(polynomialCoefficients);
}

public void process(List<Double> coefficients){
    for(int i = 0; i < coefficients.size(); i ++){
        System.out.println("Element " + i + ": " + coefficients.get(i));
    }
}

您可以使用VarArgs表示法來接收任意數量的參數,盡管它們將被轉換為array 這是通過以下代碼實現的:

public void printOneEachLine(String... parameters) {
   for (String parameter : parameters) {
      System.out.println(parameter);
   }
}

您可以通過以下方式調用它:

printOneEachLine("msg1", "msg2");
printOneEachLine("msg3", "msg4", "msg5", "msg6");

暫無
暫無

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

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