求助:使用Java while循环完成指定数字输出编程作业
问题分析与修正方案
原代码核心问题
- 第一行输出时直接修改了输入的
number变量,导致第二行计算起始值和循环范围时,使用的是已经被篡改后的数值,而非用户最初输入的原始值。 - 第二行的循环条件
while(-number>=0)逻辑完全错误,无法覆盖到输出到原始输入number的要求。
修正后的完整代码
import java.util.Scanner; public class Exercise { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); int originalNumber = myScanner.nextInt(); // 第一行:输出从originalNumber到1,无正数则输出空行 int temp = originalNumber; while (temp >= 1) { System.out.print(temp + " "); temp--; } System.out.println(); // 确保换行,空行要求自动满足 // 第二行:输出从-originalNumber到originalNumber temp = -originalNumber; while (temp <= originalNumber) { System.out.print(temp + " "); temp++; } System.out.println(); } }
关键修改说明
- 新增
originalNumber变量保存用户输入的初始值,彻底避免后续变量修改对逻辑的干扰。 - 第一行使用临时变量
temp遍历输出,不改动原始输入值。当输入为0时,while(temp >=1)不会执行,直接输出空行,符合题目要求。 - 第二行循环条件改为
temp <= originalNumber,确保遍历范围准确覆盖从-originalNumber到originalNumber的所有整数。 - 移除了冗余的
if-else判断,简化逻辑的同时保证所有场景都能正确处理。
内容的提问来源于stack exchange,提问作者Mason Madaus
相关产品推荐
相关产品推荐

