我正在尝试使用扫描仪方法查找数字的平方,但不断得到 堆栈流错误。我是编程新手,如果有人帮助我,我会很高兴。 我的代码如下
import java.util.Scanner;
interface Number {
int findSqr(int i); // Returns the square of n
}
//a class A which implements the interface Number.
class A implements Number {
public int findSqr(int i) {
return findSqr(i);
}
}
public class Question5_1{
public static void main (String[] args){
A a = new A(); // an object of class A
// Reading a number from the keyboard
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.print(a.findSqr(i));
}
}
答案 0 :(得分:0)
按如下所示用return findSqr(i)
固定以递归方式调用函数的行return i * i
-
public int findSqr(int i) {
return i * i;
}
答案 1 :(得分:0)
您所做的事情是无限递归的。它说的那句话
public int findScr(int i) {
return findSqr(i)
}
本质上在return语句中无数次调用相同的方法。 发生的是,您执行了该方法,并尝试返回一个整数。但是,您编写的是一个return语句,该语句“返回”同一方法的另一个调用,因此它再次被执行。然后整个事情重新开始,所以您得到了StackOverflow。
由于没有其他代码了,所以我不知道您实际上要做什么,但是return findSqr(i)
行是导致问题的原因。
最初,递归实际上可能是一个相当复杂的主题,我建议您暂时避免使用它(尽管它使您能够以一种非常优雅的方式解决许多问题)或尝试更好地理解它也许。我建议使用Wikipedia article关于递归的方法,尽管它很快变得很复杂,或者它上有任何其他教程,只需在Google上查找即可。