我毫无希望地尝试使用(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
}
答案 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");