Java反转负数时抛出NumberFormatException异常的原因是什么
异常产生原因
- 输入负数
-124时代码执行逻辑出现格式冲突:sc.nextInt()读取到的整数为-124,转为字符串后内容为"-124"StringBuilder.reverse()会对整个字符串的所有字符做完全反转,最终得到的字符串为"421-",负号被移动到了字符串末尾- JDK自带的
Integer.parseInt()方法要求合法的整数字符串仅能将负号放在首字符位置,末尾带负号的"421-"不符合整数格式规范,因此抛出NumberFormatException
简易修复参考
如果要兼容负数反转,可以单独处理符号位:
Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int sign = n < 0 ? -1 : 1; // 仅反转数字部分 String numStr = new StringBuilder(String.valueOf(Math.abs(n))).reverse().toString(); // 反转后补回符号 System.out.println(sign * Integer.parseInt(numStr));
内容的提问来源于stack exchange,提问作者krishna murthy
相关产品推荐
相关产品推荐

