没有输出显示,找不到错误(Java)

时间:2015-01-21 04:10:35

标签: java runtime-error output

我正在尝试编写一个Tester和一个可以解决二次函数的类。

如果您不熟悉二次函数或需要提醒,请点击此处的维基百科文章的快速链接:http://en.wikipedia.org/wiki/Quadratic_function

我的测试人员似乎工作正常,但每当我尝试调用该方法时,程序停止,并且它不显示方法的输出(应该显示答案)。

我不够熟练,无法确定错误是否属于班级或测试人员。

测试仪:

/**
 * A Tester to use to solve quadratic formula. Enter your values
 * when prompted, and the answer will be displayed on screen.
 * 
 * @author (Austin C.) 
 * @version (1.0.0)
 */
import java.io.*;
import java.util.*;
public class C_tester
{
    public static void main (String args[])
    {
        Scanner kb = new Scanner(System.in);
        System.out.println ("Enter the coefficents in the form of the following:\n1.A\n2.B\n3.C");

    System.out.print("Enter the number for A:");
    int a = kb.nextInt();

    System.out.print("Enter the number for B:");
    int b = kb.nextInt();

    System.out.print("Enter the number for C:");
    int c = kb.nextInt();

    QuadraticFunction.quadratic(a,b,c);
    }
}

二次函数类:

/**
 * @Params: you must enter the coefficents, A, B, and C, and the program will calculate them to find the answer
 * to a quadratic forumla. coefficents must be integers or doubles. 
 * 
 * @author (Austin C.) 
 * @version (1.0.0)
 */
public class QuadraticFunction
{
    public void QuadraticFunction()
    {
    }

    public static double quadratic(double a, double b, double c)
    {
    double topPos;
    double topNeg;
    double bot;

    topPos = -b + Math.sqrt(Math.pow(b,2.0)  - 4 * a * c);
    topNeg = -b - Math.sqrt(Math.pow(b,2.0)  - 4 * a * c);
    bot = 2*a;

    double ansPos = topPos/bot;
    double ansNeg = topNeg/bot;

    return ansPos + ansNeg;
    }
}

我非常感谢您自己找到错误或为我找到错误的任何帮助。此外,如果您找到更有效的方法,请分享!我一直在寻找更有效的编写代码的方法。

如果问题不清楚,请说出来,我可以用更容易理解的方式重做。

2 个答案:

答案 0 :(得分:1)

quadratic的返回类型为double,方法中没有print语句。这意味着它应该返回一个值,但是没有理由应该打印出值。您可以通过将函数结果赋值给变量,然后添加语句将其打印到屏幕来解决此问题,如下所示:

double answer = QuadraticFunction.quadratic(a,b,c);
System.out.println(answer);

另外,你应该注意到二次方程可以有2个实根(可能都是相同的),所以你应该返回一个doubles而不是一个double的数组,这是总和那两个根。

答案 1 :(得分:0)

您期望它打印什么?你永远不会告诉程序打印任何东西。您可以将结果打印到stdout,方法是将测试仪中的最后一行更改为System.out.println(QuadraticFunction.quadratic(a,b,c));,如果程序停止并且没有打印堆栈跟踪,则意味着它已成功执行