读之前可以简单的翻阅 栈的实现.
package Stack;
import java.util.Scanner;
import java.util.Stack;
/*
* 栈 加减乘除
*/
public class Compute {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
String string=scan.nextLine();
// StringBuffer sb = new StringBuffer(string);
/*
* 使用创建两个Stack分别存储数字和符号
*/
Stack<Integer> stackint=new Stack<Integer>();
Stack<Character> stackchar=new Stack<Character>();
for(int i=(string.length()-1);i>=0;i--){
if(string.charAt(i)>='0'&&string.charAt(i)<='9'){
//将char转成string,然后再讲string转成int<调用函数>
// char s1=string.charAt(i);
// String s=s1+"";
String s=Character.toString(string.charAt(i));
//System.out.println(string.charAt(i));
stackint.push(Integer.parseInt(s));
}
if(string.charAt(i)>='('&&string.charAt(i)<='/'){
stackchar.push(string.charAt(i));
}
}
char sign;
int a,b,data=0;
while(!stackchar.isEmpty()){
sign=stackchar.pop();
if(sign=='+'){
a=stackint.pop();
b=stackint.pop();
data=a+b;
stackint.push(data);
}
else if(sign=='-'){
a=stackint.pop();
b=stackint.pop();
data=a-b;
stackint.push(data);
}
else if(sign=='*'){
a=stackint.pop();
b=stackint.pop();
data=a*b;
stackint.push(data);
}
else if(sign=='/'){
a=stackint.pop();
b=stackint.pop();
if(b==0){
System.out.println("除数为0!");
System.exit(0);
}
data=a/b;
stackint.push(data);
}
}
data=stackint.pop();
System.out.println("Result="+data);
}
}
在使用chatAt()方法的时候,因为返回的是char类型所以思索了一会,一开始使用的是将string类型转为stringBuff类型char s1=string.charAt(i);String s=s1+"";
但是显然太麻烦后来搜索了一番发现String s=Character.toString(string.charAt(i));
这一句是最简单的将char类型转化为string类型。