我正在编写一个代码,该代码将乘以'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”被执行的次数。我不确定该怎么做。
答案 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));