我正在尝试编写一个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;
}
}
我非常感谢您自己找到错误或为我找到错误的任何帮助。此外,如果您找到更有效的方法,请分享!我一直在寻找更有效的编写代码的方法。
如果问题不清楚,请说出来,我可以用更容易理解的方式重做。
答案 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));
,如果程序停止并且没有打印堆栈跟踪,则意味着它已成功执行