Java 有人知道怎么解决这个问题吗?

Java 有人知道怎么解决这个问题吗?,java,Java,以下程序产生什么输出? 答案是7,但我很难计算出来 public class practice { public static void main(String[] args){ int i = 5; int b = g(i); System.out.println(b+i); } public static int f(int i) { int n = 0; while (n * n &

以下程序产生什么输出? 答案是7,但我很难计算出来

public class practice {
    public static void main(String[] args){
        int i = 5;
        int b = g(i);
        System.out.println(b+i);

    }

    public static int f(int i) {
        int n = 0;
        while (n * n <= i) {n++;}
        return n-1;
    }

    public static int g(int a) {
        int b = 0;
        int j = f(a);
        b = b + j;
        return b;
    }


}
公共课堂实践{
公共静态void main(字符串[]args){
int i=5;
int b=g(i);
系统输出打印LN(b+i);
}
公共静态整数f(整数i){
int n=0;

当(n*n你使用一个数字(5)并基本上检查大于5的第一个整数平方是什么。然后从答案中取反1,再加上5。

这就是数学:

1.找到第一个大于5的整数平方

  • 0*0=0/+1
  • 1*1=1//+1
  • 2*2=4/+1
  • 3*3=9//3*3是5以上的第一个值;循环中断
2.从3中取反1(大于

  • 3-1=2;//使用3,取反1(也可以使用n--)
3.使用最终值2添加5

  • 2+5=7//使用2添加5
答案是7。


这段代码中确实有一些不必要的东西,比如两个额外的方法。

我假设调用了main。下面是发生的步骤列表

  • 调用
    g
    时使用
    5
    作为其参数
  • 然后在函数
    g
    中,使用
    g
    的参数调用
    f
    ,该参数为
    5
  • 在函数
    f
    n
    中,将调用while循环,每次
    n*n
    小于或等于其参数5时,n将递增。下面概述了while循环。
  • 0*0小于5,将
    n
    从0增加到1,然后继续
  • 1*1小于5,将
    n
    从1增加到2,然后继续
  • 2*2小于5,将
    n
    从2增加到3,然后继续
  • 3*3不小于5,断开循环
  • n-1
    ,即3-1=2,返回到函数
    g
    中变量
    j
    中调用它的位置
  • b
    被分配到
    b+j
    ,即
    0+2
  • b
    返回函数
    main
    中的变量
    b
  • b+i
    ,即
    5+2
    ,即7,作为答案打印出来

  • 试着在纸上一行一行地计算出来。我做了,但不知怎么的我迷路了,我弄错了号码。好吧,你应该给我们看看你的工作。(你可能因为没有得到选票而落选。)