出现此错误的问题:线程“主”中的异常java.lang.NumberFormatException:对于输入字符串:“”

时间:2018-09-18 14:25:09

标签: java string

这是一个问题,我们将使用9的补码减去两个数字。

import java.io.*;

   public class NinesComplement {

    public static void main(String[] args)throws java.io.IOException {
        java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
        while (true) {
            System.out.print("Enter Minuend: ");
            int min = Integer.parseInt(br.readLine());
            System.out.print("Enter Subtrahend: ");
            String sub = br.readLine();

            int max = Integer.toString(min).length();
            for (int i = 0; sub.length() < max; i++) {
                sub = 0 + sub;
            }

            String [] subArr = sub.split("");
            int[] num = new int[subArr.length];
            for (int i = 0; i < subArr.length; i++) {
                num[i] = Integer.parseInt(subArr[i]);
            }

            int[] n = new int[num.length];
            for (int i = 0; i < num.length; i++) {
                for (int ii = 0; num[i] < 9; ii++) {
                    num[i]++;
                    n[i]++;
                }
            }

            String str = "";
            for (int i = 0; i < num.length; i++) {
                str += Integer.parseInt(Integer.toString(n[i]));
            }

            int add = Integer.parseInt(str);
            String ans = Integer.toString(min + add);

            if (ans.length() > max) {
                String temp1 = ans.substring(0, 1);
                String temp2 = ans.substring(1, ans.length());
                int fin = Integer.parseInt(temp2) + Integer.parseInt(temp1);
                System.out.println("Answer: " + fin);
            } else if (ans.startsWith("9") && ans.endsWith("9")) {
                System.out.println("Answer: 0");
            }

            System.out.print("Do you want to try again? \n[y][n]: ");
            String choice = br.readLine();
            if (choice.equals("n")) {
                System.out.println("Thank you!!!");
                        System.exit(0);
    }
    }
    }
}    
  

线程“主”中的异常java.lang.NumberFormatException:用于输入   字符串:“”

1 个答案:

答案 0 :(得分:0)

您只是想将一个空字符串解析为一个数字。 在使用前,请务必先验证用户输入:)。

在使用输入之前添加前提条件(仅是if语句检查),如果输入不正确,则向用户显示一条好消息,然后回到等待更多输入的状态。

此外,要调试此问题,请简化您的工作,并在尝试使用用户输入之前添加一些带引号的打印语句,以便查看。