java编写一个程序,由用户输入一组字符串,字符串中包含“+”,“-”,数字,若干空格,以及其他符号。程序需要在字符串中只有数字和“+”,“-”时进行加减法运算。而当字符串中有其他符号时,则输出该符号所在的前后空格之间的字符串,且不再进行加减法运算。忽略空格。使用NumberFormatException
时间: 2024-03-03 11:51:16 浏览: 59
以下是一个简单的Java程序,可以实现上述功能:
```java
import java.util.Scanner;
public class StringCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = scanner.nextLine().replaceAll(" ", ""); // 去掉空格
String numStr = "";
int result = 0;
char operator = '+';
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == '+' || c == '-') { // 遇到运算符,计算上一个数字的值,并更新运算符
try {
int num = Integer.parseInt(numStr);
if (operator == '+') {
result += num;
} else {
result -= num;
}
numStr = "";
} catch (NumberFormatException e) { // 捕获异常,输出非数字部分
int start = str.lastIndexOf(" ", i - 2) + 1;
int end = str.indexOf(" ", i + 1);
if (end == -1) {
end = str.length();
}
System.out.println(str.substring(start, end));
return;
}
operator = c;
} else if (Character.isDigit(c)) { // 遇到数字,将其加入数字串中
numStr += c;
} else { // 遇到非法字符,输出非数字部分
int start = str.lastIndexOf(" ", i - 1) + 1;
int end = str.indexOf(" ", i + 1);
if (end == -1) {
end = str.length();
}
System.out.println(str.substring(start, end));
return;
}
}
try { // 处理最后一个数字
int num = Integer.parseInt(numStr);
if (operator == '+') {
result += num;
} else {
result -= num;
}
System.out.println(result);
} catch (NumberFormatException e) { // 如果最后一个数字不合法,输出非数字部分
int start = str.lastIndexOf(" ") + 1;
int end = str.length();
System.out.println(str.substring(start, end));
}
}
}
```
该程序首先读入用户输入的字符串,去掉其中的空格。然后,从左到右扫描字符串,遇到数字时将其加入数字串中,遇到运算符时计算上一个数字的值,并更新运算符。如果遇到非法字符,则输出该字符所在的前后空格之间的字符串,且不再进行加减法运算。如果最后一个数字不合法,则输出该数字所在的前后空格之间的字符串。
阅读全文