List、Stack与Queue的综合应用
package Exp5
;
import java
.io
.BufferedReader
;
import java
.io
.IOException
;
import java
.io
.InputStreamReader
;
import java
.util
.ArrayList
;
import java
.util
.Arrays
;
import java
.util
.Deque
;
import java
.util
.LinkedList
;
import java
.util
.List
;
import java
.util
.Stack
;
public class Client {
public static void main(String
[] args
) {
System
.out
.print("请输入要计算的四则运算表达式:");
try {
String expStr
=(new BufferedReader(new InputStreamReader(System
.in
))).readLine();
String
[] nums
= expStr
.split("\\+ |- | \\* | /");
System
.out
.println("测试参加运算的整数:"+Arrays
.toString(nums
));
Deque
<String> opQueue
= new LinkedList<String>();
Stack
<String> opStack
=new Stack<>();
for(int i
=0;i
<expStr
.length();i
++) {
String temp
=expStr
.substring(i
,i
+1);
if(temp
.equals("+")||temp
.equals("-")||temp
.equals("*")||temp
.equals("/")) {
opQueue
.add(temp
);
opStack
.push(temp
);
}
}
System
.out
.println("测试参加运算的运算符队列:"+opQueue
);
List
<String> list
=new ArrayList<String>();
for(int i
=0;i
<nums
.length
;i
++) {
list
.add(nums
[i
]);
if(!opStack
.isEmpty()) {
list
.add(opStack
.pop());
}
}
System
.out
.print("使用运算数数组与运算符队列(或栈)构建的表达式:");
for(String ss
:list
) {
System
.out
.print(ss
);
}
System
.out
.println();
System
.out
.println("列表元素个数:"+list
.size());
System
.out
.println("运算数个数:"+nums
.length
);
System
.out
.println("运算符队列个数:"+opQueue
.size());
System
.out
.println("运算符队列空吗?"+opQueue
.isEmpty());
} catch (IOException e
) {
e
.printStackTrace();
}
}
}
请输入要计算的四则运算表达式:
10+24/3-4*5+6
测试参加运算的整数:
[10+24/3-4*5+6]
测试参加运算的运算符队列:
[+, /, -, *, +]
使用运算数数组与运算符队列(或栈)构建的表达式:
10+24/3-4*5+6+
列表元素个数:
2
运算数个数:
1
运算符队列个数:
5
运算符队列空吗?
false
转载请注明原文地址: https://lol.8miu.com/read-5964.html