java将数组作为参数传递不起作用。可能是什么错误?
我将var数组作为参数传递给quadraticalc方法,并使用它执行操作,但我想返回两个值。。但是给我错误
package testingequality;
import java.util.Scanner;
public class Sum {
public static void main(String[] args) {
//comparison ();
double [] var = new double [3];
int counter;
Scanner input = new Scanner (System.in);
for (counter = 0; counter< var.length; counter++)
{
System.out.println ("Input value for a,b,c");
var [counter] = input.nextDouble();
}
double [] sum = quadraticalc (var);
for (int i = 0; i < sum.length; i++)
{
System.out.println (sum [i]);
}
}
public static double [] quadraticalc (double [] var)
{
double a,b,c,d,e;
double [] x = new double [2];
a = var [0];
b = var [1];
c = var [2] ;
d = (b*b)-(4*a*c);
e = Math.sqrt(d);
double x1 = (-b + e)/ (2 * a);
double x2 = (-b - e)/ (2 * a);
x [0] = x1;
x [1] = x2;
return x;
}
}
我对代码做了一点修改,现在我能得到正确的答案了。。感谢所有的贡献
# 1 楼答案
您应该打印数组中的值,而不是打印数组引用
更改:
致:
# 2 楼答案
所以我运行了你的代码。没有错误,但我认为您得到了类似
[D@330bedb4
的打印结果,并且您认为这是一个错误。相反,这是完全可以接受的行为。在我想你希望这些数字被打印出来。但实际上,Java打印的是数组对象,它没有漂亮的字符串表示形式。因此,您需要打印在数组中找到的双精度值。这样就行了
当我这样做的时候,我得到了NaN,所以二次曲线和计算值的方式一定有问题
编辑:这是因为如果d为负,e(d的sqrt)将不是实数。如果你在计算二次曲线,你可能需要检查一下
为了便于阅读,我修改了二次函数
运行示例(我打印了可见性的a、b、c、d和e值)
这些答案是正确的,可以验证
# 3 楼答案
在这里孤注一掷。。。 您需要漂亮地打印数组的内容。试一试
但是,当然,你可能还有其他问题