java Jave while循环
Java初学者。使用Zybooks。对我来说,这个软件教的不好,很模糊。 问题是:
给定正整数numInsects,编写一个while循环,在不达到200的情况下打印该数字的两倍。在每个数字后面加一个空格。循环结束后,打印一条换行符。例如:如果numInsects=16,则打印:
163264128
以下是我所拥有的:
import java.util.Scanner;
public class InsectGrowth {
public static void main (String [] args) {
int numInsects;
Scanner scnr = new Scanner(System.in);
numInsects = scnr.nextInt(); // Must be >= 1
System.out.print(numInsects + " ");
while (numInsects <= 100) {
numInsects = numInsects * 2;
System.out.print(numInsects + " ");
}
System.out.println();
}
}
结果如下:它没有通过200次,只是留下了一个空白。 用16个进行测试。 你的产出 16 32 64 128 用98进行测试。 你的产出 98 196 用200个进行测试。 产出不同。见下面的亮点。 你的产出 200 预期产量
# 1 楼答案
将第一次打印移动到while循环中,并检查200
# 2 楼答案
while循环看到的是numInsects的当前值,而不是实际应用的内容
示例:
# 3 楼答案
这是一个处理边缘案例场景的问题。如您所见,您的
while
循环超过了边界条件一次迭代。所以你只需要调整条件用以下代码块替换
while
循环:与
# 4 楼答案
你的numInsects总是0,你应该说int numInsects=1; 因为你正在这样做:
0*2=0 0*2=0 0 0 0 0 0