[英]How can I make a while loop print userNum = 1 with whitespace after it?
我的作业(来自 Zybooks 的 Java 课程介绍)说:“编写一个 while 循环,打印 userNum 除以 2(整数除法)直到达到 1。在每个数字后面加一个空格。userNum = 20 的示例输出:20 10 5 2 1
注意:此活动将执行四次测试,分别是 userNum = 20,然后是 userNum = 1,然后是 userNum = 0,然后是 userNum = -1。”
我可以让它打印“20 10 5 2 1”,但是当我成功地在上述数字序列的末尾添加一个空格时,当 userNum = 1 时它不会将空格添加到 1。例如:“1” userNum = 1 而不是“1”。我现在只关注 1,稍后关注 0 和 -1。 此外,下面注释掉的 while 循环只是运行一个无限循环,但我认为无论如何添加它会很有用,抱歉造成混乱。 到目前为止,这是我的代码,非常感谢您:
import java.util.Scanner;
public class DivideByTwo {
public static void main (String [] args) {
int userNum = 0;
userNum = 20;
System.out.print(userNum);
while (userNum > 1) {
System.out.print(" " + (userNum/2));
userNum = userNum/2;
if (userNum == 1) {
System.out.print(" ");
}
}
/* while (userNum <= 1) {
System.out.print(" ");
userNum = userNum + 1;
}*/
System.out.println("");
return;
}
}
您可以将这个块移出while
循环 -
} // end of the while loop
if (userNum == 1) {
System.out.print(" ");
}
或者,您不需要if
there, while (userNum > 1)
确保检查得到处理。
要使用您现有的代码,请更改为——
while (userNum > 1) {
System.out.print(" " + (userNum/2));
userNum = userNum/2;
}
System.out.println(" ");
在这个初学者程序上工作了 5 天后,我终于找到了解决方案。 它首先检查 userNum 是否大于或等于 1(所以如果它是 -1 或 0(-1/2、0/2,什么都不打印),然后打印出原始的 userNum 值(20、1 等...... 。然后将此值添加到一个空格中,重复该过程,然后打印新的 userNum 值(userNum/2)。while 循环使此过程重复,直到该值不再 >= 1。最后结束并打印换行。比我原来的想法简单得多:
while (userNum >= 1) {
System.out.print(userNum + " ");
userNum = userNum / 2;
}
System.out.println("");
return;
public class DivideByTwo {
public static void main (String [] args) {
int userNum = 20;
while (userNum >= 1) {
System.out.print(userNum+" ");
userNum = userNum/2;
}
return;
}
}
如果您将 userNum 硬设置为 20,则无需声明它然后赋值,您只需在同一行中进行即可。
所以变化:如果你改变 while 循环来检查(userNum >= 1)
循环将在它的操作中包含数字 1(如果我没记错的话,Java 会舍入整数除法)。
那么会发生的事情是它会看到userNum大于或等于1,然后打印userNum和一个空格,直到值小于1。
这应该输出你想要的字符串。
但是,如果它在最后连续输出一串 1 1 1 1 1 1 1 1 ,您可以使用floor()
函数来确保它向下舍入。
这个 while 循环应该可以解决问题,而且非常简单。
while(true){
System.out.print(number + " ");
number = number / 2;
if(number==1){
break;
}
}
您使用了错误类型的循环; for
循环比while
循环更合适。 您的代码可以是:
System.out.print(userNum)
for (;userNum > 1; userNum /= 2)
System.out.print(" " + usernum);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.