我希望这个while循环打印所提交数字下面的每两个中的两个(例如,如果100提交它将打印2 4 8 16 32 64)。这就是我所拥有的(我只会包括一部分课程,因为其中有其他内容与此部分无关)
i = 1;
Scanner myScanner = new Scanner(System.in);
System.out.print("Would thoughst be inclined to enter a number fair sir/madam: ");
String answer = myScanner.nextLine();
int number = Integer.parseInt(answer);
System.out.print("Your number set is: ");
while(i <= number)
{
i = 2*i;
System.out.print(" " + i + " ");
}
如果输入100,则打印的内容为:2 4 8 16 32 64 128
如何摆脱最后一个号码?
答案 0 :(得分:3)
您可以通过修改匹配的逻辑来摆脱这个数字。您的代码正是按照它所说的完成。一个选项是从2开始,并在循环的 end 处增加i
,而不是在打印之前。您还可以使用for
循环:
for (int i = 2; i < 100; i *= 2)
...
如果您想保存最后一个电量,您可以选择一些选项,例如:
int k = 2;
for (int i = k; i < 100; i *= 2) {
k = i;
...
}
或撤消上一次操作:
int i;
for (i = 2; i < 100; i *= 2)
...;
i /= 2;
或者检查下一个:
int i;
for (i = 2; i * 2 < 100; i *= 2)
...;
以原始格式检查下一个:
while (i * 2 <= number)
...;
等
顺便说一下,你的标题是“因素”,你的描述是“倍数”,你的代码是“权力”......
答案 1 :(得分:2)
在您的代码中
while(i <= number)
{
i = 2*i;
System.out.print(" " + i + " ");
}
问题是,i
当等于64
时,确实小于100
,因此循环继续。
如果您将其更改为
i = 2*i;
while(i <= number)
{
System.out.print(" " + i + " ");
i = 2*i;
}
它可以按照您的意愿执行,因为在被分析为while-loop终结符之前预先计算值。
答案 2 :(得分:1)
尝试
while( i <= number / 2)
答案 3 :(得分:1)