Java的帮助!试图弄清楚for循环是如何工作的

时间:2018-11-29 17:30:11

标签: java eclipse

public static void main(String[] args) {

    // create new instance of random class
    Random rand = new Random();
    // set variable num to be a random number between 0 and 10
    int user = rand.nextInt(10);
    // set output equal to the result of our function
    int password = check_password(user);
    // print result
    System.out.println(password);

}

// returns the factorial of the given input- by what number i is 
// i can be less than or equal to 10
    public static int check_password(int user) {
    int log = 1;
    for (int i = 1; i <= user; i++) {
        log = log * i;
    }
    return log;
    }

我对答案如何高于10感到困惑,当您在eclipse中运行代码时,我不明白它如何打印答案: 40320 120 6 5040 24 2 1个 362880

我应该弄清楚代码的作用并将其写在代码中的注释中

2 个答案:

答案 0 :(得分:0)

您的“ check_password”方法实际上是在计算数字的阶乘。例如,如果数字生成为5,则您的方法将返回120。因此,由于10的阶乘为3628800,因此输出可能远高于10。

答案 1 :(得分:0)

无论将int用户设置为多少,for循环都会循环多次。每次循环,它将执行log * i。我正在循环的哪个迭代中。因此,如果用户随机设置为5,它将循环5次。第一个循环将执行1 * 1,将日志设置为1。下一个循环将执行1 * 2,将日志设置为2。第三个循环将执行2 * 3,将日志设置为6,依此类推。当int user随机设置为5时,最终日志将为120。您将返回log的最终值,并将其设置为等于密码,然后打印出密码。这就是为什么您要打印的值大于10的原因。