<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                這道題因為格式限定所以比較簡單,自己用正則表達式就給擴展了下,寫成了多項匹配的代碼,順便復習了正則,測試數據少,可能有沒發現的錯誤,如有發現請指出 [**點此直達擴展代碼**](#) ### 題目 問題描述 編寫一個程序,以字符串方式輸入一個前綴表達式,然后計算它的值。輸入格式為:“運算符 對象1 對象2”,其中,運算符為“+”(加法)、“-”(減法)、“*”(乘法)或“/”(除法),運算對象為不超過10的整數,它們之間用一個空格隔開。要求:對于加、減、乘、除這四種運算,分別設計相應的函數來實現。 輸入格式:輸入只有一行,即一個前綴表達式字符串。 輸出格式:輸出相應的計算結果(如果是除法,直接采用c語言的“/”運算符,結果為整數)。 輸入輸出樣例 樣例輸入 + 5 2 樣例輸出 7 ### 題目要求的代碼 ~~~ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); //獲得輸入串 String str = input.nextLine(); //把輸入串以空格分成數組 String[] arr = str.split(" "); //提取出算術運算符 char[] letter = arr[0].toCharArray(); //依次計算 switch (letter[0]){ case '+': System.out.println(Integer.parseInt(arr[1])+Integer.parseInt(arr[2])); break; case '-': System.out.println(Integer.parseInt(arr[1])-Integer.parseInt(arr[2])); break; case '*': System.out.println(Integer.parseInt(arr[1])*Integer.parseInt(arr[2])); break; case '/': System.out.println(Integer.parseInt(arr[1])/Integer.parseInt(arr[2])); break; } } } ~~~ ### 擴展的通用代碼 ~~~ import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by nl101 on 2016/1/22. */ public class Main1 { public static void main(String[] args) { //測試數據((12+2)-6)/2 String str = "/ - + 12 2 6 2"; System.out.println(prefix(str)); } private static String prefix(String str){ //用于匹配 運算符 空格 數字 空格 數字的正則 Pattern p = Pattern.compile("[\\+\\-\\*\\/][\\s]\\d{1,}[\\s]\\d{1,}"); Matcher matcher = p.matcher(str); //開始匹配 while (matcher.find()){ //計算匹配的值 如,+ 12 2 則返回14 String temp = calculate(matcher.group()); StringBuffer sb = new StringBuffer(); //替換上面的為計算出來的數值 matcher.appendReplacement(sb,temp); //追加剩余子串 matcher.appendTail(sb); str = sb.toString(); //或者上面都注釋掉用下面一句話都可以了 // str = matcher.replaceFirst(calculate(matcher.group())); //遞歸循環 return prefix(str); } return str; } /** * 和第一個程序一樣,計算出來+ 12 2這種類型數值 * @param str * @return */ private static String calculate(String str){ String[] arr = str.split(" "); int i = 0; char[] letter = arr[0].toCharArray(); switch (letter[0]){ case '+': i = Integer.parseInt(arr[1])+Integer.parseInt(arr[2]); break; case '-': i = Integer.parseInt(arr[1])-Integer.parseInt(arr[2]); break; case '*': i = Integer.parseInt(arr[1])*Integer.parseInt(arr[2]); break; case '/': i = Integer.parseInt(arr[1])/Integer.parseInt(arr[2]); break; } return String.valueOf(i); } } ~~~ 水平不高,有好的建議歡迎留言
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看