Java读取数值符号程序处理空白输入时抛出NumberFormatException求助
问题解决思路与修正代码
问题根源
- 直接对空白/全空格字符串调用
Integer.parseInt()会触发NumberFormatException,空字符串无法转换为整数 - 原代码逻辑错误:else分支仅在输入为0时触发,并非处理空白输入场景
- 需求支持浮点数输入,但代码使用整数转换,不符合要求
修正后的代码
import java.util.Scanner; public class CheckingSign { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter floating point value: "); String input = scanner.nextLine(); String trimmedInput = input.trim(); // 优先处理空白输入(含全空格情况) if (trimmedInput.isEmpty()) { System.out.print("DEBUG:the user input is < " + input + " >"); System.out.println("DEBUG:the trimed input is <" + trimmedInput + ">"); System.out.println("Encountered blank input."); return; } try { // 用Double处理浮点数输入,覆盖整数和小数场景 double num = Double.parseDouble(trimmedInput); System.out.print("DEBUG:the user input is < " + input + " >"); System.out.println("DEBUG:the trimed input is <" + trimmedInput + ">"); if (num > 0) { System.out.println("The sign of the input is 1"); } else if (num < 0) { System.out.println("The sign of the input is -1"); } else { System.out.println("The input is zero."); } } catch (NumberFormatException e) { // 捕获非数值的非法输入 System.out.print("DEBUG:the user input is < " + input + " >"); System.out.println("DEBUG:the trimed input is <" + trimmedInput + ">"); System.out.println("Invalid input: not a valid floating point number."); } } }
关键修改说明
- 先对输入执行
trim(),判断是否为空字符串,优先处理空白输入场景 - 将整数转换改为
Double.parseDouble(),满足浮点数输入需求,同时兼容整数输入 - 增加
try-catch块捕获转换异常,处理非数值的非法输入 - 调整逻辑分支:空白输入单独处理,数值输入按正负零区分,非法输入给出明确提示
内容的提问来源于stack exchange,提问作者Alex H.
相关产品推荐
相关产品推荐

