我正在编写一个程序,该程序假设从用户读取字符串并验证字符串和操作数。只有两个可接受的操作数是“+”和“ - ”。该字符串不能包含除数字之外的任何字符(如果有),则应该显示为“输入错误”,但会一直提示用户。我在下面粘贴了我的代码,我们假设为这个程序使用例外。我的代码无法正常工作,它崩溃,这些数字需要进行总结,并打印出来,但我无法这样做,与在字符串中验证字符串异常
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String term;
do {
String str = input.nextLine();
term = str.trim();
try {
System.out.println(validInput(str));
System.out.println(sumNums(str));
} catch (IllegalOperandException e) {
System.out.println("Bad Input");
} catch (NumberFormatException e) {
System.out.println("Bad Input");
}
} while (term.length() > 0);
}
public static String validInput(String string) throws IllegalOperandException {
String output = "";
String[] stringArray = string.split("\\s+");
for (String s : stringArray) {
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (!(Character.isDigit(c) || c == '+' || c == '-' || c == '.')) {
throw new IllegalOperandException(String.valueOf(c));
}
else if(Character.isDigit(c)){
Double.parseDouble(Character.toString(c));
}
}
output = output + s + " ";
}
return output;
}
public static double sumNums (String nums) throws NumberFormatException, ArrayIndexOutOfBoundsException {
String[] stringArray2 = nums.split("\\s+");
int i = 0;
int sum;
if (stringArray2[i].equals("-")) {
i++;
sum = Integer.parseInt(stringArray2[i]);
} else
sum = Integer.parseInt(stringArray2[i]);
for(int j = 0; j < stringArray2.length; j++) {
if (stringArray2[i].equals("+"))
sum+=Integer.parseInt(stringArray2[i-1]);
if (stringArray2[i].equals("-"))
sum-=Integer.parseInt(stringArray2[i+1]);
}
return sum;
}
}
你会得到什么具体的错误? – Seb
当我输入一串字符,它假设说“不好的输入”,它使用户再次提示,但它给了我这个“线程中的异常”主“java.lang.Error:未解决的编译问题: \t方法IllegalOperandException(焦炭)是不确定的型式试验 \t在TEST.validInput(TEST.java:44) \t在TEST.main(TEST.java:21) –