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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JS實(shí)現(xiàn)多功能計(jì)算器

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

本文實(shí)例為大家分享了JS實(shí)現(xiàn)多功能計(jì)算器的具體代碼,供大家參考,具體內(nèi)容如下

1、開(kāi)發(fā)語(yǔ)言 HTML+CSS+JavaScript

2、開(kāi)發(fā)工具 Visual Studio Code

3、項(xiàng)目GitHub地址:計(jì)算器 (喜歡可以給一個(gè)star)

4、項(xiàng)目運(yùn)行截圖:

JS實(shí)現(xiàn)多功能計(jì)算器

5、技術(shù)分析:由于除了簡(jiǎn)單的四則運(yùn)算,還需要進(jìn)行括號(hào)匹配,以及優(yōu)先級(jí)的運(yùn)算。采用后綴表達(dá)式的形式進(jìn)行處理,同時(shí)通過(guò)模擬棧的特點(diǎn)運(yùn)用JS自帶的數(shù)組進(jìn)行處理。由于代碼有詳細(xì)的注釋?zhuān)灾苯由洗a。

6、項(xiàng)目代碼:

compute.html:

<!-- * @Author: CSU_XZY * @Date: 2020-10-15 21:17:33 * @LastEditors: CSU_XZY * @LastEditTime: 2020-10-16 22:07:08 * @FilePath: 第二天計(jì)算器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>計(jì)算器</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://m.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: 第二天計(jì)算器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;//回退一個(gè)文字 if(number === ’D’) { text = text.substring(0,text.length-1); document.getElementById(’display’).innerHTML=text; return; }//判斷第一個(gè)數(shù)字是不是運(yùn)算符 else if(judgeBegin(number) && text == '') return;//判斷是否是連續(xù)兩個(gè)運(yùn)算符一起輸入 else if(judgeBegin(number) && judgeNext(text,number) && text[text.length-1] !== ’)’) return;//判斷第一個(gè)輸入是不是‘.’,如果是變?yōu)?. else if(number === ’.’ && text == '') number = '0.';//如果輸入歸0,清空輸入 else if(number === ’C’) { document.getElementById(’text’).innerHTML=''; document.getElementById(’display’).innerHTML=''; return; }//輸入是等號(hào)就判斷 else if(number === ’=’) { //將數(shù)字與運(yùn)算符分開(kāi) let array = []; let n = text.length; for(let i = 0; i < n; i++) { var JudgeNumber = true; let res = ''; //判斷第一個(gè)數(shù)字是否是負(fù)號(hào) if(i===0 && text[i] === ’-’) { res+=text[i]; i++; } //判斷是不是在運(yùn)算符之后的減號(hào),是就變?yōu)樨?fù)號(hào) if(i !== 0 && near(array[array.length-1]) && text[i] === ’-’) { res+=text[i]; i++; } //判斷是否為連續(xù)的數(shù)字 while(JudgeIsNumber(text[i]) && i < n) { res += text[i]; i++; JudgeNumber = false; } //如果不為數(shù)字了要回退一個(gè) if(JudgeNumber === false) i--; //判斷其他運(yùn)算符 if(JudgeNumber === true) if(judgeBegin(text[i]) || text[i] === ’(’ || text[i] === ’-’ || text[i] === ’)’) res+=text[i]; array.push(res); } // console.log(array); //中綴表達(dá)式變?yōu)楹缶Y表達(dá)式 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;}//判斷是不是運(yùn)算符function judgeBegin(number){ for(let i = 0; i < ysf.length; i++) { if(ysf[i] === ’-’) continue; if(ysf[i] === number) return true; } return false;}//判斷是否輸入兩個(gè)連續(xù)的運(yùn)算符function judgeNext(text,number){ if(number === ’-’) return; let a = text.length; if(judgeBegin(text[a-1]) && judgeBegin(number)) return true; return false;}//判斷輸入的字符里面是不是數(shù)字function JudgeIsNumber(number){ for(let i = 0; i < isNumber.length; i++) { if(isNumber[i] === number) return true; } return false;}//判斷減號(hào)前面是否有別的運(yùn)算符從而確定是不是負(fù)號(hào)function near(number){ for(let i = 0; i < sizeyunsuan.length; i++) { if(sizeyunsuan[i] === number) return true; } return false;}//中綴表達(dá)式改為后綴表達(dá)式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]); //如果棧頂為左括號(hào)直接入棧 else if(stack[stack.length-1] === ’(’ && array[i] !== ’)’) stack.push(array[i]); //如果輸入左括號(hào)直接入棧 else if(array[i] === ’(’) stack.push(array[i]); //如果輸入的是右括號(hào) else if(array[i] === ’)’) { //一直彈出直到遇到左括號(hào) while(stack[stack.length-1] !== ’(’) { let a = stack.pop(); textArea.push(a); } //彈出左括號(hào) 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;}//計(jì)算后綴表達(dá)式function compute(array){ var NUMBER = []; for(let i = 0; i < array.length; i++) { //是運(yùn)算符就計(jì)算 if(near(array[i])){ //加法 if(array[i] === ’+’) { if(NUMBER.length < 2) return '錯(cuò)誤'; 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 '錯(cuò)誤'; 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 '錯(cuò)誤'; 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 '錯(cuò)誤'; else { let a = NUMBER.pop(); let b = NUMBER.pop(); if(a === 0) return '0不能作為除數(shù)'; 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 '錯(cuò)誤'; else { let b = String(NUMBER[0]); return b; }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美精品成人| 精品亚洲成人| 久久丁香四色| 精品在线99| 青青伊人久久| 亚洲播播91| 欧美日韩视频免费看| 亚洲高清二区| 精品一区二区三区免费看| 三级一区在线视频先锋| 国产精品久久久久久久久久久久久久久| 亲子伦视频一区二区三区| 日韩不卡一二三区| 黄色在线一区| 国产999精品在线观看| 免费黄网站欧美| 亚洲最新无码中文字幕久久| 日韩国产在线观看| 狠狠色狠狠色综合日日tαg| 国产91在线精品| 国产免费av一区二区三区| 久热精品在线| 久久久久久美女精品| 欧美激情麻豆| 日韩精品欧美大片| 99成人在线视频| 精品视频91| 日本国产一区| 免费日本视频一区| 伊人久久大香线蕉av不卡| 国产精品成久久久久| 日韩高清一级| 美日韩精品视频| 欧美va天堂在线| 日韩精品诱惑一区?区三区| 欧美国产免费| 国产精品手机在线播放| 亚洲区第一页| 免费不卡在线观看| 亚洲少妇一区| 欧美日韩在线二区| 久久影院午夜精品| 久久精品三级| 国产精品久久久一区二区| 日韩激情精品| 日韩欧美在线精品| 蜜桃视频一区二区三区| 国产模特精品视频久久久久| 1024精品一区二区三区| 美女福利一区二区三区| 国产成年精品| 国产一区二区三区视频在线| 国产精品www.| 久久99性xxx老妇胖精品| 久久激情av| 日韩和欧美一区二区| 亚洲a级精品| 亚洲精品三级| 亚洲一区二区三区无吗| 日韩中文字幕不卡| 另类av一区二区| 在线一区视频| 午夜在线一区| 在线免费观看亚洲| 亚洲欧美一级| 日韩精品视频网| 久久国产精品免费一区二区三区 | 亚洲精品福利| 天堂久久av| 日韩高清欧美激情| 国产欧美日韩综合一区在线播放| 欧美另类中文字幕 | 日韩精品中文字幕吗一区二区 | 国产精品啊v在线| 另类欧美日韩国产在线| 高清在线一区| 国产高清不卡| 日韩av首页| 在线一区电影| 欧美专区18| 日本va欧美va瓶| 国产日韩欧美一区二区三区在线观看| 欧美在线首页| 欧美激情网址| 美女网站视频一区| 午夜亚洲精品| 国产日韩1区| 中文在线免费视频| 欧美.日韩.国产.一区.二区 | 夜夜精品视频| 亚洲精品高潮| 国产福利资源一区| 青青青免费在线视频| 欧美成人午夜| 亚洲毛片在线免费| 国产精品麻豆成人av电影艾秋 | 日韩精品电影| 日韩午夜在线| 日本亚洲欧洲无免费码在线| 久久国产人妖系列| 国产在线观看www| 午夜国产精品视频免费体验区| 亚洲一区二区av| 另类小说一区二区三区| 亚洲夜间福利| 日韩精品一区二区三区av| 美女视频黄 久久| 999国产精品视频| 亚洲精品成a人ⅴ香蕉片| 精品一区二区三区亚洲| 亚洲精品午夜av福利久久蜜桃| 日韩一区二区三区高清在线观看| 嫩呦国产一区二区三区av| 久久在线电影| 四虎精品永久免费| 国产在线视频欧美一区| 午夜视频精品| 国产美女亚洲精品7777| 1024精品一区二区三区| 日韩av电影一区| 成人在线网站| 日本综合精品一区| 日韩精品中文字幕第1页| 亚洲精品乱码| 国产欧美一区二区三区精品酒店| 亚洲自啪免费| 精品一区视频| 在线精品视频一区| 97精品视频在线看| 人人精品人人爱| 精品久久久亚洲| 久久亚洲国产精品一区二区| 精品欧美日韩精品| 久久国产高清| 亚洲免费福利| 欧美日韩91| 美女少妇全过程你懂的久久| 久久精品 人人爱| 日韩午夜av| 日韩av有码| 日本在线成人| 亚洲二区三区不卡| 国产精品久久观看| 亚洲精品护士| 亚洲www啪成人一区二区| 国产日韩一区二区三免费高清| 午夜av一区| 国产91在线播放精品| 婷婷亚洲精品| 视频一区中文| 国产成人精品免费视| 青青草视频一区| 国产婷婷精品| 电影亚洲精品噜噜在线观看| 国产精品一区二区三区av| 亚洲一区二区三区免费在线观看| 国产一区二区三区四区二区 | 噜噜噜躁狠狠躁狠狠精品视频 | 日韩在线一区二区| 日韩网站中文字幕| 国产精品2023| 亚洲一二三区视频| 激情六月综合| 超碰超碰人人人人精品| 国产精品香蕉| 日韩激情av在线| 日韩精品一级中文字幕精品视频免费观看| 日韩不卡一区| 国产精品一区二区美女视频免费看 | 日韩专区视频网站| 午夜日本精品| 午夜精品成人av| 美女视频网站久久| 欧美日韩99| 日本一区中文字幕| 亚洲一区二区免费在线观看| 久久久久免费av| a天堂资源在线| 国产精品久久777777毛茸茸| 亚洲人成高清| 男女性色大片免费观看一区二区| 欧美在线观看视频一区| 中文字幕成在线观看| 久久伊人国产| 国产精品手机在线播放| 日韩中文一区二区| 热久久久久久久| 亚洲在线观看| 国产91一区| 四虎884aa成人精品最新| 麻豆精品视频在线观看| 日韩成人精品一区二区三区 | 久久av在线| 国产精品日韩久久久| 欧美高清不卡| 欧美1级日本1级| 欧美特黄一级| 亚洲深爱激情| 男人天堂欧美日韩| 亚洲深夜福利|