(java.lang.StackOverflowerr)如何解决?
我正在写一个基于二次方程的程序,我觉得一切都很好,没有语法或逻辑错误,而且Eclipse在运行之前没有检测到任何错误。 这是代码的输出: 线程“main”java.lang.StackOverflowerr中出现异常 getDiscriminant(QuadraticEquation.java:33) 请注意,它继续这样大约50行(java.lang.StackOverflowerr)如何解决?,java,object,if-statement,methods,stack-overflow,Java,Object,If Statement,Methods,Stack Overflow,我正在写一个基于二次方程的程序,我觉得一切都很好,没有语法或逻辑错误,而且Eclipse在运行之前没有检测到任何错误。 这是代码的输出: 线程“main”java.lang.StackOverflowerr中出现异常 getDiscriminant(QuadraticEquation.java:33) 请注意,它继续这样大约50行 公共类求积方程{ 私人双a; 私人双b; 私人双c; 公共平方方程(){ 双a=0; 双b=0; 双c=0; } 公共平方方程(双新A、双新B、双新C){ a=新a;
公共类求积方程{
私人双a;
私人双b;
私人双c;
公共平方方程(){
双a=0;
双b=0;
双c=0;
}
公共平方方程(双新A、双新B、双新C){
a=新a;
b=新的;
c=新c;
}
公共双鉴别器1=数学功率(b,2)-4*a*c;
公共双鉴别器2=数学功率(b,2)-4*a*c;
公共双getA(){
返回getA();
}
公共双getB(){
返回getB();
}
公共双getC(){
返回getC();
}
公共双元判别式(){
双判别式=(b*2)-(4*a*c);
返回getDiscriminant();
}
公共双getRoot1(){
双r1=(-1*b)+数学sqrt(鉴别器1)/(2*a);
返回getRoot1();
}
公共双getRoot2(){
双r2=(-1*b)-数学sqrt(鉴别器2)/(2*a);
返回getRoot2();
}
公共无效setA(双新A1){
a=新A1;
}
公共无效收进(双1){
b=1;
}
公共无效setC(双新C1){
c=新的C1;
}
}
import java.util.Scanner;
公共类测试方程{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
QuadraticEquation quadratice=新的QuadraticEquation();
System.out.println(“请输入以下变量的值:”);
System.out.println(“a:”);
setA(input.nextDouble());
System.out.println(“b:”);
squared.setB(input.nextDouble());
System.out.println(“c:”);
setC(input.nextDouble());
if(squared.getDiscriminant()<0){
System.out.println(“方程有以下根:”);
System.out.println(“第一个是”+Quadratic.getRoot1());
System.out.println(“第二个是”+Quadratic.getRoot2());
}
如果(Quadratic.getDiscriminant()==0){
System.out.println(“方程有一个根:”);
System.out.println(Quadratic.getRoot1());
}
否则{
System.out.println(“方程没有实根”);
返回;
}
}
}
您的错误是一个无限递归:
public-double-getDiscriminant(){
双判别式=(b*2)-(4*a*c);
返回getDiscriminant();
}
此函数无限调用自身,直到堆栈溢出。我相信您想返回变量discriminant
对于函数getRoot1
、getRoot2
、getA
、getB
和getC
,也一样