国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 大同县| 常山县| 津南区| 谷城县| 凤翔县| 龙海市| 西乌珠穆沁旗| 郓城县| 扶风县| 沅江市| 泸定县| 女性| 惠州市| 韩城市| 和政县| 兰考县| 娄底市| 华安县| 普洱| 岚皋县| 共和县| 阿坝县| 揭西县| 钦州市| 噶尔县| 黄浦区| 祥云县| 闻喜县| 绿春县| 鹤庆县| 马尔康县| 克山县| 如皋市| 汨罗市| 钟祥市| 铜山县| 遂平县| 班戈县| 曲靖市| 古浪县| 岫岩|