给一个字符串,里面是小于10的数字的加减乘法运算,将结果输出到控制台
代码:
import org.junit.Test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str= scanner.nextLine();
char[] chars = str.toCharArray();
int pro;
ArrayList list = new ArrayList();
for (int i =0;i<chars.length;i++) {
list.add(chars[i]);
if (chars[i] == '*') {
int num1 = Integer.parseInt(chars[i + 1] + "");
int num2 = Integer.parseInt(list.get(list.size() - 2) + "");
list.remove(list.size() - 1);
list.remove(list.size() - 1);
pro = num1 * num2;
list.add(pro);
i++;
}
}
String[] arr = new String[list.size()];
Iterator iterator = list.iterator();
int index = 0;
while (iterator.hasNext()){
arr[index] = iterator.next()+"";
index++;
}
list.clear();
int sum = 0;
sum = Integer.parseInt(arr[0]);
for (int j = 0;j<arr.length;j++){
if (arr[j].equals("+")&&j>1){
sum += Integer.parseInt(arr[j+1]);
}else if (arr[j].equals("-")&&j>1){
sum -= Integer.parseInt(arr[j+1]);
}
}
System.out.println(sum);
}
}
解题思路
- 先将字符串转换为字符数组
toCharArray();
- 因为乘法的优先级高,新建一个list,用于保存乘法运算后的字符串:
int pro;
ArrayList list = new ArrayList();
for (int i =0;i<chars.length;i++) {
list.add(chars[i]);
if (chars[i] == '*') {
int num1 = Integer.parseInt(chars[i + 1] + "");
int num2 = Integer.parseInt(list.get(list.size() - 2) + "");
list.remove(list.size() - 1);
list.remove(list.size() - 1);
pro = num1 * num2;
list.add(pro);
i++;
}
- 新建一个数组,将list的结果集转换为字符串,并保存再数组中
- 对数组进行遍历,新建一个int,用于统计结果
- 将arr[0]的值赋给该值
- 遍历数组,与后面的数字相加减,得出最终结果。