如何使用Java实现指定规则的数字序列打印,现有代码运行错误如何解决
原代码错误点
- 循环内直接加了
break语句,仅执行一次计算就强制退出循环,无法完成直到值为1的重复运算 - 计算后的新值没有回写到
num变量,每次循环都在对初始输入值做计算 - 循环判断条件和输出逻辑不符合需求,打印时自动换行无法得到空格分隔的输出
- 定义的
notOne变量无实际作用,属于冗余代码
修正后代码
package victor; import java.util.Scanner; public class proj { public static void main(String[] args) { Scanner put = new Scanner(System.in); System.out.println("input::: "); int num = put.nextInt(); // 循环直到num变为1为止 while (num != 1) { int temp; if (num % 2 == 0) { temp = num / 2; } else { temp = num * 3 + 1; } // 打印结果用空格分隔,不换行 System.out.print(temp + " "); // 更新num为新计算的值,用于下一轮循环 num = temp; } put.close(); } }
验证
输入3时,运行输出为10 5 16 8 4 2 ,和示例结果一致,若要去掉末尾空格可额外做输出截断处理即可。
内容的提问来源于stack exchange,提问作者Edith Stark
相关产品推荐
相关产品推荐

