亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java實現計算器的代碼

2024-07-14 08:41:16
字體:
來源:轉載
供稿:網友

用Java 實現的計算器,原理看代碼注釋,具體內容如下

public class MyCalculator { public static void main(String[] args) {  String obj = "6+(8/2)+6/3+1*8 + 30";  ArrayList<String> arrayList = strFormat(obj);  System.out.println(obj + "=" + calculator(arrayList)); } /**  * 采用后續表達式計算結果  * 1、當前字符串為數字時,直接入棧  * 2、當前字符串為計算符時,取出棧中的前兩個計算  * 3、將計算結果再放入到棧中,棧中最后剩余的一個元素就是要求的結果  */ private static int calculator(ArrayList<String> obj) {  ArrayList<String> result = transform(obj);  System.out.println(result);  Stack<Integer> stack = new Stack<>();  for (int i = 0; i < result.size(); i++) {   String symbol = result.get(i);   if (isDigital(symbol)) { //數字直接入棧    stack.push(Integer.parseInt(symbol));   } else { // 處理操作符    int num1, num2;    num1 = stack.pop(); //取出兩個數    num2 = stack.pop();    switch (symbol) {     case "+":      stack.push(num2 + num1);      break;     case "-":      stack.push(num2 - num1);      break;     case "*":      stack.push(num2 * num1);      break;     case "/":      stack.push(num2 / num1);      break;     default:      break;    }   }  }  return stack.pop(); } /**  * 中序遍歷改為后續遍歷  */ private static ArrayList<String> transform(ArrayList<String> arrayList) {  Stack<String> stack = new Stack<>();  ArrayList<String> result = new ArrayList<>();  for (int index = 0; index < arrayList.size(); index++) {   String symbol = arrayList.get(index);   if (isDigital(symbol)) { //如果是數字直接輸出    result.add(symbol);   } else if (symbol.equals(")")) {    String tmp;    while (!(tmp = stack.pop()).equals("(")) { // 匹配成功后停止     result.add(tmp);    }   } else {    if (stack.isEmpty()) {     stack.push(symbol);     continue;    }    String tmp = stack.peek();    while (outPriority(symbol) <= inPriority(tmp)) { //優先級小于棧內優先級,一直出棧     result.add(tmp);     stack.pop();     if (stack.isEmpty()) {      break;     }     tmp = stack.peek();    }    stack.push(symbol);   }  }  //將剩余的出棧  while (!stack.isEmpty()) {   result.add(stack.pop());  }  return result; } /**  * 首先對String 進行格式化 轉化成ArrayList  * @param src 3*5+8;  * @return ArrayList 3 * 5 + 8  */ private static ArrayList<String> strFormat(String src) {  if (src == null || src.equals("")) {   return null;  }  ArrayList<String> arrayList = new ArrayList<>();  StringBuilder comChar = new StringBuilder();  for (int i = 0; i <src.length(); i++) {   char ch = src.charAt(i);   if (ch == ' ') {    continue; //去除空格   }   if (!Character.isDigit(ch)) {    if (!comChar.toString().trim().equals("")) {     arrayList.add(comChar.toString().trim());     comChar.delete(0, comChar.length());    }    arrayList.add(ch + "");    continue;   }   comChar.append(ch);  }  if (!comChar.toString().trim().equals("")) {   arrayList.add(comChar.toString().trim());  }  return arrayList; } /**  * 判斷是否為數字  * @param symbol 782 或者 + - * /  * @return true or false  */ private static boolean isDigital(String symbol) {  return !symbol.equals("+") && !symbol.equals("-")    && !symbol.equals("*") && !symbol.equals("/")    && !symbol.equals("(") && !symbol.equals(")"); } private static int inPriority(String ch) {  switch (ch) {   case "+":   case "-":    return 2;   case "*":   case "/":    return 4;   case ")":    return 7;   case "(":    return 1;   default:    return 0;  } } private static int outPriority(String ch) {  switch (ch) {   case "+":   case "-":    return 3;   case "*":   case "/":    return 5;   case ")":    return 1;   case "(":    return 7;   default:    return 0;  } }}

以上全部為本篇文章的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩在线播放| 亚洲人成网在线播放| 欧美国产第二页| 国产精品精品一区二区三区午夜版| www.色综合| 久久久久久久久中文字幕| 97在线观看视频| 91精品国产91久久久久久吃药| 久久激情视频久久| 亚洲深夜福利视频| 国产精品久久久久久一区二区| 亚洲欧美国产精品久久久久久久| 亚洲成人激情图| 亚洲国产高清高潮精品美女| 91在线|亚洲| 久久这里只有精品视频首页| 91亚洲精品久久久久久久久久久久| 久久综合网hezyo| 亚洲精品国产精品国产自| 欧美电影电视剧在线观看| 91av在线看| 国产一区二区精品丝袜| 久久久国产精彩视频美女艺术照福利| 成人有码在线视频| 亚洲专区中文字幕| 精品国产91久久久久久老师| 国产97在线|亚洲| 91av视频在线播放| 美女999久久久精品视频| 精品国产乱码久久久久久天美| 久久久亚洲影院你懂的| 久久国产精品99国产精| 国产精品免费福利| 欧美放荡办公室videos4k| 91精品美女在线| 亚洲第一网站免费视频| 日韩美女视频免费在线观看| 国产精品视频精品视频| 在线看片第一页欧美| 成人免费直播live| 欧美日韩在线视频一区二区| 中文字幕在线国产精品| 亚洲国产精品va| 国产一区二区色| 精品国产欧美一区二区五十路| 亚洲白拍色综合图区| 久久人人看视频| 91亚洲精品一区| 欧美日韩免费在线| 日韩高清电影免费观看完整版| 成人在线免费观看视视频| 欧美精品久久久久a| 精品国内自产拍在线观看| 国外成人在线直播| www.午夜精品| 精品久久中文字幕| 日韩亚洲综合在线| 国产精品视频免费在线| 成人激情免费在线| 久久精品久久久久电影| 精品久久久久久中文字幕一区奶水| 亚洲精品永久免费| 国产精品亚洲欧美导航| 国产一区二区三区丝袜| 免费97视频在线精品国自产拍| 欧美剧在线观看| 国产精品pans私拍| 久久久精品一区二区三区| 97在线视频免费观看| 亚洲香蕉成视频在线观看| 亚洲aⅴ男人的天堂在线观看| 国产精品手机播放| 亚洲精品99久久久久| 成人www视频在线观看| 国产精品美女www爽爽爽视频| 亚洲最大中文字幕| 海角国产乱辈乱精品视频| 日韩国产欧美区| 韩国国内大量揄拍精品视频| 久久精品成人欧美大片古装| 懂色av中文一区二区三区天美| 亚洲国产日韩一区| 色婷婷成人综合| 欧美一级电影在线| 久久99视频免费| 国产精品高潮在线| 国产日韩精品在线播放| 91人成网站www| 色婷婷av一区二区三区久久| 欧美在线日韩在线| 亚洲日本欧美中文幕| 久久久久久久亚洲精品| 国内偷自视频区视频综合| 国产性猛交xxxx免费看久久| 国产欧美久久久久久| 欧美黑人巨大精品一区二区| 97色在线视频观看| 国产69精品久久久久9999| 精品偷拍各种wc美女嘘嘘| 亚洲无限乱码一二三四麻| 亚洲自拍偷拍色图| 亚洲xxxx视频| 成人黄色免费在线观看| 亚洲国产精品va在线观看黑人| 亚洲一区久久久| 国产日韩av在线| 欧美超级乱淫片喷水| 精品久久久精品| 日韩人在线观看| 亚洲日韩欧美视频| 亚洲综合最新在线| 91亚洲永久免费精品| 亚洲国产成人久久综合| 亚洲天堂色网站| 自拍亚洲一区欧美另类| 91精品久久久久久久久久| 亚洲电影免费观看高清完整版在线| 中文字幕久精品免费视频| 国产视频久久久久| 97精品伊人久久久大香线蕉| 欧美主播福利视频| 国产精品久久久久久久久久东京| 日韩精品视频在线| 国产精品视频午夜| 久久网福利资源网站| 国产欧美亚洲视频| 欧美精品第一页在线播放| 精品久久久视频| 97在线看免费观看视频在线观看| 久久国产精品久久久久久| 日韩在线播放一区| 欧美午夜xxx| 欧美高清自拍一区| 97精品国产97久久久久久| 国产亚洲视频在线观看| 国产91在线播放精品91| 欧美日韩成人网| 亚洲欧美在线x视频| 91成人精品网站| 国内精品中文字幕| 国产一区二区激情| 黄色成人在线播放| 成人女保姆的销魂服务| 狠狠色香婷婷久久亚洲精品| 国产精品男人爽免费视频1| 久久久中文字幕| 国产欧美在线观看| 91av在线看| 色综合久久精品亚洲国产| 久久久久久高潮国产精品视| 国产丝袜精品第一页| 亚洲乱码一区av黑人高潮| 亚洲视频网站在线观看| 国内精品小视频在线观看| 欧美国产日韩中文字幕在线| 超薄丝袜一区二区| 欧美在线观看www| 亚洲女人天堂av| 欧美高清性猛交| 粉嫩av一区二区三区免费野| 精品国内自产拍在线观看| 日韩中文字幕在线精品| 精品久久久久久中文字幕大豆网| 91在线观看免费高清完整版在线观看|