我编写了一个如下所示的小程序,该程序计算无限递归循环在导致StackOverflow错误之前将经过多少次。
public class Testing {
static void p(int i) {
System.out.println("hello" + i);
i++;
p(i);
}
public static void main(String[] args) {
p(1);
}
}
Run Code Online (Sandbox Code Playgroud)
事实是,它每次都会以不同的数字出错,通常在8000到9000之间。有人能解释为什么会这样吗?
编辑:我正在使用Eclipse IDE,尚未与其他IDE或命令行对其进行测试。
我在条件中有一个带有扫描器的if/else语句,以及检查输入为100或更少的&&语句.它是这样的:
Scanner input = new Scanner(System.in);
if(input.hasNextInt() && avgBefore <= 100) {
avgBefore = input.nextInt();
}
Run Code Online (Sandbox Code Playgroud)
但如果我把一个数字超过100,它仍然接受它.有帮助吗?