如何使用可变数量的参数调用和声明方法?

时间:2014-09-20 00:25:10

标签: java arrays variables methods

我毫无希望地尝试使用(int = amountCoefficients)数量的参数调用函数,并声明具有该数量的参数的函数。

更难的是例如amountCoefficients = 5,那么它意味着有5个块的数组,每个块都有一个值(double)。所以第一个参数必须等于该数组的第一个块的值,第二个参数必须等于该数组的第二个块的值等。

事先我们不知道我们需要多少个参数,因为这取决于用户填写的双精度数量,因此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
}

2 个答案:

答案 0 :(得分: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));
    }
}

答案 1 :(得分: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");