我将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;
}
}
我对代码做了一些改动,现在我能够得到正确的答案..感谢所有贡献
答案 0 :(得分:0)
在这里走出困境...... 你需要漂亮地打印数组的内容。尝试
Arrays.toString(sum)
但是,当然,你可能有其他问题......
答案 1 :(得分:0)
所以我运行了你的代码。没有错误,但我认为你得到的内容如[D@330bedb4
,你认为这是一个错误。相反,这是完全可接受的行为。在
System.out.println (sum);
我认为您希望打印数字。实际上,Java打印的数组对象没有漂亮的字符串表示。因此,您希望打印在数组中找到的双打。像这样的东西会做
for (int i=0; i < sum.length; i++) {
System.out.println(sum[i]);
}
当我这样做时我得到了NaN,所以quadraticalc一定有问题以及你如何计算值。
编辑:这是因为如果d为负数,则e(d的sqrt)将不是实数。如果您正在计算二次方,您可能需要检查它。
我更改了二次函数以便于阅读
public static double [] quadraticalc (double [] var)
{
double a = var [0];
double b = var [1];
double c = var [2];
System.out.println("a = " + a + ", b = " + b + ", c = " + c);
double root1 = (-b + Math.sqrt(Math.pow(b, 2) - 4*a*c)) / (2*a);
double root2 = (-b - Math.sqrt(Math.pow(b, 2) - 4*a*c)) / (2*a);
return new double[] { root1, root2 };
}
示例运行(我打印了a,b,c,d和e值以便查看)
Input value for a,b,c
10 100 10
Input value for a,b,c
Input value for a,b,c
a = 10.0, b = 100.0, c = 10.0, d = 9600.0, e = 97.97958971132712
-0.10102051443364388
-9.898979485566356
这些答案是正确的,可以通过@ http://www.math.com/students/calculators/source/quadratic.htm
进行验证答案 2 :(得分:0)
您应该在数组内打印值,而不是打印数组引用。
变化:
System.out.println (sum);
为:
System.out.println (sum[0]);
System.out.println (sum[1]);