2014-09-20 4 views
0

나는 (int = amountCoefficients) 양의 인수로 함수를 호출하려고 노력하고 있으며, 그 양의 인수로 함수를 선언하려고합니다.가변 인수를 사용하여 메소드를 호출하고 선언하는 방법은 무엇입니까?

예를 들어 amountCoefficients = 5 일 때 더 어렵게 만드는 것은 각 블록에 값 (double)을 갖는 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

1

당신은 그들이 array로 변환됩니다 있지만, 매개 변수의 임의의 금액을받을 수 VarArgs notation를 사용할 수 있습니다.

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

을 그리고 당신은 그것을 호출 할 수 있습니다 : 이것은 다음과 같은 코드에 의해 달성 된 솔루션

printOneEachLine("msg1", "msg2"); 
printOneEachLine("msg3", "msg4", "msg5", "msg6"); 
관련 문제