日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JS實現多功能計算器

瀏覽:168日期:2024-04-13 15:49:29

本文實例為大家分享了JS實現多功能計算器的具體代碼,供大家參考,具體內容如下

1、開發語言 HTML+CSS+JavaScript

2、開發工具 Visual Studio Code

3、項目GitHub地址:計算器 (喜歡可以給一個star)

4、項目運行截圖:

JS實現多功能計算器

5、技術分析:由于除了簡單的四則運算,還需要進行括號匹配,以及優先級的運算。采用后綴表達式的形式進行處理,同時通過模擬棧的特點運用JS自帶的數組進行處理。由于代碼有詳細的注釋,所以直接上代碼。

6、項目代碼:

compute.html:

<!-- * @Author: CSU_XZY * @Date: 2020-10-15 21:17:33 * @LastEditors: CSU_XZY * @LastEditTime: 2020-10-16 22:07:08 * @FilePath: 第二天計算器compute.html * @Description: just to play--><!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <title>計算器</title></head><style> *{ margin: 0; padding: 0; } body{ background-color: #FCFDFE; } .container{ overflow: hidden; box-shadow: 0 0 3px 0 rgba(0, 0, 0, .3); margin: 150px auto; width: 548px; height: 274px; background-color: #fff; } .box{ background-color: #fcfdff; margin: 15px auto; overflow: hidden; width: 514px; height: 244px; } .number{ width: 514px; height: 189px; } .text{ width: 514px; height: 55px; margin: 0; } span{ border-top: solid 1px #ebebeb; border-right: solid 1px #ebebeb; box-sizing: border-box; float: left; display: block; width: 25%; font-size: 16px; color: #333; background-color: #fff; line-height: 37px; cursor: pointer; text-align: center; font-weight: 10px; } span:hover{ background-color: #d3d7d4; } span:active{ background-color: #afdfe4; } .text>p{ text-align: right; width: 514px; height: 24px; line-height: 25px; font-size: 25px; } .number>div{ width: 514px; height: 37.8px; } .around{ background-color: #f9f9f9; color: #f60; } .compute{ color: #333; } .bottom{ background-color: #fff; color: #f60; } .dot{ font-size: 23px; font-weight: 19px; }</style><body> <div class='container'> <div class='box'> <div class='text'> <p id='text'></p> <p id='display'></p> </div> <div class='number'> <div class='around'> <span onclick='showDetails(this)' data-value='(' class='around'>(</span> <span onclick='showDetails(this)' data-value=')' class='around'>)</span> <span onclick='showDetails(this)' data-value='D' class='around'>del</span> <span onclick='showDetails(this)' data-value='C' class='around compute'>C</span> </div> <div> <span onclick='showDetails(this)' data-value='7'>7</span> <span onclick='showDetails(this)' data-value='8'>8</span> <span onclick='showDetails(this)' data-value='9'>9</span> <span onclick='showDetails(this)' data-value='÷' class='around'>÷</span> </div> <div> <span onclick='showDetails(this)' data-value='4'>4</span> <span onclick='showDetails(this)' data-value='5'>5</span> <span onclick='showDetails(this)' data-value='6'>6</span> <span onclick='showDetails(this)' data-value='x' class='around'>x</span> </div> <div> <span onclick='showDetails(this)' data-value='1'>1</span> <span onclick='showDetails(this)' data-value='2'>2</span> <span onclick='showDetails(this)' data-value='3'>3</span> <span onclick='showDetails(this)' data-value='-' class='around'>-</span> </div> <div> <span onclick='showDetails(this)' data-value='0'>0</span> <span onclick='showDetails(this)' data-value='.' class='around bottom dot'>.</span> <span onclick='showDetails(this)' data-value='=' class='around bottom'>=</span> <span onclick='showDetails(this)' data-value='+' class='around'>+</span> </div> </div> </div> </div></body><script type='text/javascript' src='http://www.b3g6.com/bcjs/compute.js'></script></html>

compute.js:

/* * @Author: CSU_XZY * @Date: 2020-10-15 21:17:45 * @LastEditors: CSU_XZY * @LastEditTime: 2020-10-17 00:04:41 * @FilePath: 第二天計算器compute.js * @Description: just to play */var ysf = [’+’,’÷’,’=’,’)’,’%’,’x’,’-’,’D’];var sizeyunsuan = [’+’,’÷’,’(’,’x’,’-’];var isNumber = [’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’0’,’.’];function showDetails(number){ var number = number.getAttribute('data-value'); var text = document.getElementById(’display’).innerText;//回退一個文字 if(number === ’D’) { text = text.substring(0,text.length-1); document.getElementById(’display’).innerHTML=text; return; }//判斷第一個數字是不是運算符 else if(judgeBegin(number) && text == '') return;//判斷是否是連續兩個運算符一起輸入 else if(judgeBegin(number) && judgeNext(text,number) && text[text.length-1] !== ’)’) return;//判斷第一個輸入是不是‘.’,如果是變為0. else if(number === ’.’ && text == '') number = '0.';//如果輸入歸0,清空輸入 else if(number === ’C’) { document.getElementById(’text’).innerHTML=''; document.getElementById(’display’).innerHTML=''; return; }//輸入是等號就判斷 else if(number === ’=’) { //將數字與運算符分開 let array = []; let n = text.length; for(let i = 0; i < n; i++) { var JudgeNumber = true; let res = ''; //判斷第一個數字是否是負號 if(i===0 && text[i] === ’-’) { res+=text[i]; i++; } //判斷是不是在運算符之后的減號,是就變為負號 if(i !== 0 && near(array[array.length-1]) && text[i] === ’-’) { res+=text[i]; i++; } //判斷是否為連續的數字 while(JudgeIsNumber(text[i]) && i < n) { res += text[i]; i++; JudgeNumber = false; } //如果不為數字了要回退一個 if(JudgeNumber === false) i--; //判斷其他運算符 if(JudgeNumber === true) if(judgeBegin(text[i]) || text[i] === ’(’ || text[i] === ’-’ || text[i] === ’)’) res+=text[i]; array.push(res); } // console.log(array); //中綴表達式變為后綴表達式 var hz = houZhui(array); console.log(hz); var result = compute(hz); document.getElementById(’text’).innerHTML = text; document.getElementById(’display’).innerHTML = result; return; } text+=number; document.getElementById(’display’).innerHTML=text;}//判斷是不是運算符function judgeBegin(number){ for(let i = 0; i < ysf.length; i++) { if(ysf[i] === ’-’) continue; if(ysf[i] === number) return true; } return false;}//判斷是否輸入兩個連續的運算符function judgeNext(text,number){ if(number === ’-’) return; let a = text.length; if(judgeBegin(text[a-1]) && judgeBegin(number)) return true; return false;}//判斷輸入的字符里面是不是數字function JudgeIsNumber(number){ for(let i = 0; i < isNumber.length; i++) { if(isNumber[i] === number) return true; } return false;}//判斷減號前面是否有別的運算符從而確定是不是負號function near(number){ for(let i = 0; i < sizeyunsuan.length; i++) { if(sizeyunsuan[i] === number) return true; } return false;}//中綴表達式改為后綴表達式function houZhui(array){ var stack = []; var textArea = []; for(let i = 0; i < array.length; i++) { if(near(array[i]) || array[i] === ’)’) { //如果是空直接入棧 if(stack.length === 0) stack.push(array[i]); //如果棧頂為左括號直接入棧 else if(stack[stack.length-1] === ’(’ && array[i] !== ’)’) stack.push(array[i]); //如果輸入左括號直接入棧 else if(array[i] === ’(’) stack.push(array[i]); //如果輸入的是右括號 else if(array[i] === ’)’) { //一直彈出直到遇到左括號 while(stack[stack.length-1] !== ’(’) { let a = stack.pop(); textArea.push(a); } //彈出左括號 stack.pop(); } else if(array[i] === ’-’ || array[i] === ’+’) { while(stack[stack.length-1] !== ’(’ && stack.length !== 0) { let a = stack.pop(); textArea.push(a); } stack.push(array[i]); } else if(array[i] === ’x’ || array[i] === ’÷’) { while(stack[stack.length-1] !== ’(’ && stack[stack.length-1] !== ’+’ && stack[stack.length-1] !== ’-’ && stack.length !== 0) { let a = stack.pop(); textArea.push(a); } stack.push(array[i]); } } else{ textArea.push(array[i]) } } while(stack.length !== 0) { let a = stack.pop(); textArea.push(a); } return textArea;}//計算后綴表達式function compute(array){ var NUMBER = []; for(let i = 0; i < array.length; i++) { //是運算符就計算 if(near(array[i])){ //加法 if(array[i] === ’+’) { if(NUMBER.length < 2) return '錯誤'; else { let a = NUMBER.pop(); let b = NUMBER.pop(); let c = a + b; NUMBER.push(c); } } //減法 else if(array[i] === ’-’) { if(NUMBER.length < 2) return '錯誤'; else { let a = NUMBER.pop(); let b = NUMBER.pop(); let c = b - a; NUMBER.push(c); } } //乘法 else if(array[i] === ’x’) { if(NUMBER.length < 2) return '錯誤'; else { let a = NUMBER.pop(); let b = NUMBER.pop(); let c = a * b; NUMBER.push(c); } } //除法 else if(array[i] === ’÷’) { if(NUMBER.length < 2) return '錯誤'; else { let a = NUMBER.pop(); let b = NUMBER.pop(); if(a === 0) return '0不能作為除數'; let c = b / a; NUMBER.push(c); } } } else{ if(array[i][0] === ’-’) { let temp = array[i].substring(1,array[0].length); let num = parseFloat(temp); num = -num; NUMBER.push(num); } else{ let num = parseFloat(array[i]); NUMBER.push(num); } console.log(NUMBER); } } if(NUMBER.length !== 1) return '錯誤'; else { let b = String(NUMBER[0]); return b; }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆成人91精品二区三区| 美国三级日本三级久久99| 天堂成人免费av电影一区| 精品一区在线| 在线日韩中文| 国产精品丝袜xxxxxxx| 天堂av在线一区| 婷婷精品在线观看| 国产情侣一区在线| 成人在线免费观看91| 精品久久精品| 色爱av综合网| 亚洲一区国产| 91成人福利| 精品一区二区三区中文字幕在线| 久久av资源| 欧美aa一级| 亚洲成人免费| 亚洲一级大片| 国产伦一区二区三区| 麻豆国产91在线播放| 国产精品成人a在线观看| 日韩欧美少妇| 男女性色大片免费观看一区二区 | 久久97视频| 黄在线观看免费网站ktv| 久久久天天操| 日日夜夜免费精品视频| 久久精品伊人| 亚洲第一区色| 日本aⅴ精品一区二区三区 | 国产精品极品在线观看| 精品免费av一区二区三区| 久久91导航| 亚洲精品伊人| 福利一区视频| 99视频精品| 国产欧美日韩视频在线| 久久人人精品| 日韩精品一区二区三区中文在线| 卡一卡二国产精品| 女同性一区二区三区人了人一| 综合日韩在线| 成人在线黄色| 亚洲欧美日韩在线观看a三区| 国产日韩1区| 天堂网av成人| 免费观看日韩电影| 国产精品伦理久久久久久| 久久成人一区| 国模大尺度视频一区二区| 亚洲免费精品| 麻豆成人av在线| 美女日韩在线中文字幕| 国产中文欧美日韩在线| 视频一区二区国产| 日本午夜大片a在线观看| 日本精品另类| 亚洲国产影院| 国产极品久久久久久久久波多结野 | 中文一区一区三区免费在线观 | 精品一区二区三区中文字幕在线| 伊人久久成人| 国产精品男女| av一区二区高清| 国产精品嫩草影院在线看| 亚洲女同中文字幕| 国产专区精品| 亚久久调教视频| 免费在线小视频| 国产欧美日韩在线一区二区 | 国产精品视频首页| 久久亚洲风情| 日韩免费一区| 亚洲精品护士| 99精品综合| 久久只有精品| 亚洲精品婷婷| 亚洲激精日韩激精欧美精品| 国产福利资源一区| 久久高清国产| 日韩中文影院| 精品视频91| 7777精品| 亚洲影院天堂中文av色| 99久久夜色精品国产亚洲狼| 国产精品白丝av嫩草影院| 亚洲丝袜啪啪| 成人在线超碰| 久久黄色影院| 日产欧产美韩系列久久99| 欧美国产亚洲精品| 国产字幕视频一区二区| 91成人在线精品视频| 日本а中文在线天堂| 97成人超碰| 亚洲欧美伊人| 精品国产美女a久久9999| 日韩在线电影| 在线亚洲观看| 激情欧美一区| 日韩伦理福利| 美女视频免费精品| 日韩欧美中文字幕一区二区三区| 毛片在线网站| 精品少妇一区| 精品亚洲成人| 久久精品国产在热久久| 国产伦精品一区二区三区千人斩| 亚洲色图综合| 亚洲香蕉视频| 日韩专区一卡二卡| 亚洲激情婷婷| 伊人精品视频| 黄色国产精品| 午夜一区在线| 久久香蕉精品| 在线观看一区| 亚洲最大av| 欧美专区18| 久久xxxx| 亚洲精品第一| 日韩精品视频在线看| 日本视频在线一区| 国产精品一国产精品k频道56| 国产日韩欧美三区| 国产精品免费精品自在线观看| 中文字幕av亚洲精品一部二部| 国产一区二区三区四区| 亚洲精品黄色| 久久精品动漫| 高潮一区二区| 99xxxx成人网| 蜜桃视频第一区免费观看| 香蕉久久夜色精品国产| 日韩精品免费视频一区二区三区 | 成人午夜亚洲| 欧美韩一区二区| 国产一区二区三区精品在线观看 | 在线视频免费在线观看一区二区| 国产精品日韩欧美一区| 亚洲精品九九| 国产欧美激情| 国产精品99一区二区三区| 久久亚州av| 亚洲人成在线网站| 亚洲精品网址| 日本中文字幕一区二区视频 | 亚洲va中文在线播放免费| 免费欧美一区| 亚洲精品裸体| 欧美激情一区| 久久精品国内一区二区三区水蜜桃| 亚洲精品网址| 欧美日韩中出| 日韩精品午夜| 亚洲ww精品| 国产精品一区二区av日韩在线| 国产精品二区不卡| 欧美日韩国产一区精品一区| 日韩在线网址| 亚洲三级欧美| 一区二区三区网站| 精品国内亚洲2022精品成人| 亚洲福利国产| 18国产精品| 精品国模一区二区三区| 免费不卡在线观看| 美女精品久久| 日韩午夜免费| 久久精品国产福利| 欧美女激情福利| 欧美精品观看| 久久中文字幕av| 91成人小视频| 亚洲特级毛片| 国产精品99久久免费| 欧美日韩国产在线观看网站| 日本午夜精品久久久| 91精品推荐| 国产精品男女| 红桃视频国产精品| 久久香蕉精品香蕉| 国产精品丝袜xxxxxxx| 久久影视三级福利片| 91超碰国产精品| 久久成人av| 亚洲免费激情| 精品中文字幕一区二区三区| 日韩网站在线| 国产一区不卡| 88久久精品| 99国产精品久久久久久久| 久久久久97| 在线观看视频免费一区二区三区| 成人午夜毛片| 日韩专区视频网站| 国产99久久| 精品高清久久| 青青草国产精品亚洲专区无|