这是一个问题,我们将使用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:用于输入 字符串:“”
答案 0 :(得分:0)
您只是想将一个空字符串解析为一个数字。 在使用前,请务必先验证用户输入:)。
在使用输入之前添加前提条件(仅是if语句检查),如果输入不正确,则向用户显示一条好消息,然后回到等待更多输入的状态。
此外,要调试此问题,请简化您的工作,并在尝试使用用户输入之前添加一些带引号的打印语句,以便查看。