如何打印执行“ while”的次数?

时间:2018-10-07 08:50:07

标签: java do-while

我正在编写一个代码,该代码将乘以'x'直到达到'y'。

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);  
    int x = scan.nextInt();
    int y = scan.nextInt();

    do {
        x = (int)(x*(1.1f));

    }
        while(x < y);

    }

在答案中,我必须获得“ while”被执行的次数。我不确定该怎么做。

2 个答案:

答案 0 :(得分:2)

因此一般的方法是,创建类型为i的变量int,并在while循环块的末尾增加它(实际上看起来很简单)。所以总的来说,我会这样:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int x = scan.nextInt();
    int y = scan.nextInt();
    int i = 0;
    do {
        x = (int)(x*(1.1f));
        i++;
    } while (x < y);
    System.out.println("Loop executed " + i + " times.");
}

如果您可以使用for循环,请尝试以下解决问题的方法:

import java.util.Scanner;

public class Example {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        int i = 0;
        for (; x < y; i++)
            x = (int)(x*(1.1f));
        System.out.println("Loop executed " + i + " times.");
    }
}

由于for循环允许每次迭代执行某些语句,因此您可以在每次循环时增加计数器变量(这可以解决使用continue;语句的情况)。

答案 1 :(得分:1)

基本上,您需要找出x乘以1.1的次数才能大于y。换句话说,1.1应该提高到什么才能使其比y/x大。

因此,使用计数器的替代方法是观察到您需要计算log 1.1 (y / x)并将其向上舍入到下一个int,在Java中可以完成:

Math.ceil (Math.log ((double)y/x) / Math.log (1.1));