Java整数求和程序打印异常:输入值显示为0而非原整数
问题解决:计算整数各位和时原数字显示为0的修复
问题出在你计算各位数字和的过程中,直接修改了存储用户输入的userNumber变量。循环里每次执行userNumber = userNumber / 10,直到userNumber变成0才会退出循环,最后打印的时候自然输出的是0,而不是用户最初输入的数字。
修复方案很简单,只需要保存原始输入的数字,别让计算过程修改它:
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter a number: "); // 循环直到输入整数 while (!scanner.hasNextInt()) { scanner.next(); // 丢弃非整数输入 System.out.print("Please enter digits only: "); } // 读取用户输入并保存原始值 int originalNumber = scanner.nextInt(); int userNumber = originalNumber; // 用副本做计算 int sumofUsernumber = 0; while (userNumber > 0) { sumofUsernumber += userNumber % 10; userNumber /= 10; } // 打印时使用原始值 System.out.println("The combined value of " + originalNumber + " is " + sumofUsernumber); }
关键修改点:
- 新增
originalNumber变量存储用户输入的原始整数,计算时用userNumber这个副本操作 - 打印语句中替换为
originalNumber,确保输出的是用户最初输入的数字 - 顺便修复了原代码最后一行缺少分号的语法问题
这样输入101时,就会正确输出The combined value of 101 is 2了。
内容的提问来源于stack exchange,提问作者Lau
相关产品推荐
相关产品推荐

