java简单的多则运算计算器

简单写一个java相关的多则运算计算器

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;


public class Cal {

	public static void main(String[] args) {
		boolean isSign=false;
	
		String s="-1+2-3*4/2";
	/*
	  //如需键盘输入
	 	Scanner sc = new Scanner(System.in);
		String s = sc.nextLine();
		
		*/
		if(s.charAt(0)=='-'){
			s=s.substring(1);
			isSign=true;
		}
		//数字切割器
		StringTokenizer numSt=new StringTokenizer(s, "0123456789.");
		//存放所有运算符
		List<String> opers=new ArrayList<>();
		while(numSt.hasMoreTokens()){
			opers.add(numSt.nextToken());
		}	
		//运算符切割器
		StringTokenizer  operSt=new StringTokenizer(s, "+-*/%");
		List<Double> numbers=new ArrayList<>();
		while(operSt.hasMoreTokens()){
			numbers.add(Double.parseDouble(operSt.nextToken()));
		}
		if(isSign){
			numbers.add(0,numbers.remove(0)*-1);
		}
for (int i = 0; i < opers.size(); i++) {
			if(opers.get(i).equals("*")){
				double  result=numbers.remove(i)*numbers.remove(i); 
				numbers.add(i, result);
				opers.remove(i);
				i--;
			}
			else if(opers.get(i).equals("/")){
				double  result=numbers.remove(i)/numbers.remove(i);
				numbers.add(i, result);
				opers.remove(i);
				i--;
			}
		}
		for (int i = 0; i < opers.size(); i++) {
			if(opers.get(i).equals("+")){
				double  result=numbers.remove(i)+numbers.remove(i); 
				numbers.add(i, result);
				opers.remove(i);
				i--;
			}
			else if(opers.get(i).equals("-")){
				double  result=numbers.remove(i)-numbers.remove(i); 
				numbers.add(i, result);
				opers.remove(i);
				i--;
			}
			
		}
		System.out.println();
		for (int i = 0; i < numbers.size(); i++) {
			System.out.print(numbers.get(i)+"\t");
		}
		

	}

}

StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。
1.构造函数
public StringTokenizer(String str)
public StringTokenizer(String str, String delim)
public StringTokenizer(String str, String delim, boolean returnDelims)
第一个参数就是要分隔的String,第二个是分隔字符集合,第三个参数表示分隔符号是否作为标记返回,如果不指定分隔字符,默认的是:”\t\n\r\f”
2.核心方法
public boolean hasMoreTokens()
public String nextToken()
public String nextToken(String delim)
public int countTokens()
其实就是三个方法,返回分隔字符块的时候也可以指定分割符,而且以后都是采用最后一次指定的分隔符号。
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页