传递数组作为参数不起作用。可能是什么错误?

时间:2015-07-09 15:58:04

标签: 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; 

    }
}

我对代码做了一些改动,现在我能够得到正确的答案..感谢所有贡献

3 个答案:

答案 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]);