2014-09-20 46 views
0

我毫無希望地試圖用(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 
} 

回答

1

您可以創建一個採用列表或數組的方法。然後該方法可以使用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)); 
    } 
} 
+0

感謝您的解決方案! – Ken 2014-09-20 01:17:28

1

可以使用VarArgs notation接收的參數的任意的量,儘管它們將被轉換成一個array。這是通過類似下面的代碼來實現:

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

而且你可以把它叫做:

printOneEachLine("msg1", "msg2"); 
printOneEachLine("msg3", "msg4", "msg5", "msg6"); 
相關問題