国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

華為上機(jī)測(cè)試題(表達(dá)式運(yùn)算-java)

2019-11-14 21:12:58
字體:
供稿:網(wǎng)友
華為上機(jī)測(cè)試題(表達(dá)式運(yùn)算-java

PS:自己寫的,自測(cè)試OK,供大家參考。

補(bǔ)充:數(shù)據(jù)解析的過程,評(píng)論區(qū)有更好的處理方式,可參考。

/* * 輸入一個(gè)表達(dá)式,3*8+7-2,沒有括號(hào) 輸出結(jié)果 */

/* 本程序暫不考慮容錯(cuò)處理 */

  1 import java.util.Scanner;  2   3 public class Calculator {  4   5     /* 例如:表達(dá)式 3*8+7-2中,dataNum=4,opNum=3 */  6     PRivate static int daNum = 0;    //表達(dá)式中數(shù)據(jù)個(gè)數(shù)  7     private static int opNum = 0;    //表達(dá)式中運(yùn)算符個(gè)數(shù)  8       9     public static void main(String[] args) { 10          11         System.out.println("請(qǐng)輸入運(yùn)算表達(dá)式(例如:3*8+7-2):"); 12         Scanner s = new Scanner(System.in); 13         //String str = s.nextLine().toString(); 14         char[] ch = s.nextLine().toCharArray(); 15         s.close(); 16         StringBuffer sbOP = new StringBuffer(); 17         StringBuffer sbDA = new StringBuffer(); 18  19         int dataIndex = 0; 20         int[] data = new int[32];    // 限定能處理的最大數(shù)據(jù)個(gè)數(shù)為32 21          22         for(int i = 0; i < ch.length; i++) 23         { 24             if(('+' == ch[i])||('-' == ch[i])||('*' == ch[i])||('/' == ch[i])) 25             { 26                 sbOP.append(ch[i]); 27                 opNum++; 28                 for(int j = dataIndex; j < i; j++) 29                 { 30                     sbDA.append(ch[j]); 31                 } 32                 data[daNum++] = Integer.parseInt(sbDA.toString()); 33                 sbDA.delete(0, sbDA.length());    //清空sbDA 34                 dataIndex = i+1; 35             } 36         } 37         for(int j = dataIndex; j < ch.length; j++) 38         { 39             sbDA.append(ch[j]); 40         } 41         data[daNum++] = Integer.parseInt(sbDA.toString()); 42         int[] da = new int[daNum];    //數(shù)值數(shù)組 43         for(int i = 0; i < daNum; i++) 44         { 45             da[i] = data[i]; 46             //System.out.println("da:"+da[i]); 47         } 48         char[] op = sbOP.toString().toCharArray();    //運(yùn)算符數(shù)組 49          50         System.out.println("="+cal(da, op)); 51     } 52  53     private static int cal(int[] da, char[] op) { 54          55         if(1 == daNum) 56         { 57             return da[0]; 58         } 59          60         // 初始化 標(biāo)示所以da值都是有效的 61         boolean[] flag = new boolean[daNum]; 62         for(int i = 0; i < daNum; i++) 63         { 64             flag[i] = true; 65         } 66          67         while(1 != daNum) 68         { 69             // 乘除運(yùn)算 70             for(int i = 0; i < opNum; i++) 71             { 72                 if('*' == op[i]) 73                 { 74                     da[i+1] = da[i] * da[i+1]; 75                     flag[i] = false; 76                     daNum--; 77                 } 78                 if('/' == op[i]) 79                 { 80                     da[i+1] = da[i] / da[i+1]; 81                     flag[i] = false; 82                     daNum--; 83                 } 84             } 85  86             // 加減運(yùn)算 87             int index = 0; 88             for(int i = 0; i < opNum; i++) 89             { 90                 index = i+1; 91                 if('+' == op[i]) 92                 { 93                     while(!flag[index]) 94                     { 95                         index++; 96                     } 97                     da[index] = da[i] + da[index]; 98                     flag[i] = false; 99                     daNum--;100                 }101                 if('-' == op[i])102                 {103                     while(!flag[index])104                     {105                         index++;106                     }107                     da[index] = da[i] - da[index];108                     flag[i] = false;109                     daNum--;110                 }111             }112         }113         114         return da[opNum];115     }116 }


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 浦北县| 太仓市| 巴林右旗| 安岳县| 阳朔县| 镇江市| 怀仁县| 英德市| 葵青区| 锡林浩特市| 新河县| 赣州市| 利津县| 扬州市| 邳州市| 梁河县| 固阳县| 信阳市| 栖霞市| 罗甸县| 宿松县| 加查县| 福泉市| 南郑县| 龙江县| 迭部县| 新巴尔虎左旗| 临洮县| 武川县| 句容市| 兰西县| 奉化市| 元朗区| 郯城县| 黔西县| 南澳县| 旌德县| 开平市| 莲花县| 莲花县| 新干县|