Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(java.lang.StackOverflowerr)如何解决?_Java_Object_If Statement_Methods_Stack Overflow - Fatal编程技术网

(java.lang.StackOverflowerr)如何解决?

(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;

我正在写一个基于二次方程的程序,我觉得一切都很好,没有语法或逻辑错误,而且Eclipse在运行之前没有检测到任何错误。 这是代码的输出: 线程“main”java.lang.StackOverflowerr中出现异常 getDiscriminant(QuadraticEquation.java:33) 请注意,它继续这样大约50行

公共类求积方程{
私人双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
,也一样