/java/Expression.java.html
https://code.google.com/ · HTML · 153 lines · 153 code · 0 blank · 0 comment · 0 complexity · 056fa749a37235dfc3bb014d38063862 MD5 · raw file
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <title>~/vim_java/Expression.java.html</title>
- <meta name="Generator" content="Vim/7.3">
- <meta name="plugin-version" content="vim7.3_v6">
- <meta name="syntax" content="java">
- <meta name="settings" content="no_pre,number_lines">
- </head>
- <body bgcolor="#000000" text="#ffffff">
- <font color="#ffff00"><b> 1 </b></font><font color="#8080ff"><b>import</b></font> java.util.Scanner; <br>
- <font color="#ffff00"><b> 2 </b></font><font color="#8080ff"><b>import</b></font> java.util.Stack; <br>
- <font color="#ffff00"><b> 3 </b></font><font color="#00ff00"><b>public</b></font> <font color="#00ff00"><b>class</b></font> Expression { <br>
- <font color="#ffff00"><b> 4 </b></font><br>
- <font color="#ffff00"><b> 5 </b></font> <font color="#00ffff">//?????????,????+?-?*?/???????????????? </font><br>
- <font color="#ffff00"><b> 6 </b></font> <font color="#00ffff">//???????????????????????????????? </font><br>
- <font color="#ffff00"><b> 7 </b></font> <font color="#00ff00"><b>public</b></font> <font color="#00ff00"><b>static</b></font> <font color="#00ff00"><b>final</b></font> <font color="#00ff00"><b>char</b></font>[][] relation = {{<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>}, <br>
- <font color="#ffff00"><b> 8 </b></font> {<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>},{<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>}, <br>
- <font color="#ffff00"><b> 9 </b></font> {<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>},{<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'='</b></font>,<font color="#ff40ff"><b>'!'</b></font>}, <br>
- <font color="#ffff00"><b> 10 </b></font> {<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'!'</b></font>,<font color="#ff40ff"><b>'>'</b></font>,<font color="#ff40ff"><b>'>'</b></font>},{<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'<'</b></font>,<font color="#ff40ff"><b>'!'</b></font>,<font color="#ff40ff"><b>'='</b></font>}}; <br>
- <font color="#ffff00"><b> 11 </b></font><br>
- <font color="#ffff00"><b> 12 </b></font> <font color="#00ff00"><b>public</b></font> <font color="#00ff00"><b>static</b></font> <font color="#00ff00"><b>void</b></font> main(String[] args) { <br>
- <font color="#ffff00"><b> 13 </b></font> Scanner input = <font color="#ff6060"><b>new</b></font> Scanner(System.in); <br>
- <font color="#ffff00"><b> 14 </b></font> System.out.println(<font color="#ff40ff"><b>"???????????"</b></font>); <br>
- <font color="#ffff00"><b> 15 </b></font> String exp = input.next(); <br>
- <font color="#ffff00"><b> 16 </b></font> System.out.println(calc(exp + <font color="#ff40ff"><b>"#"</b></font>)); <br>
- <font color="#ffff00"><b> 17 </b></font> } <br>
- <font color="#ffff00"><b> 18 </b></font> <font color="#00ffff">/**</font><font color="#ff40ff"> </font><br>
- <font color="#ffff00"><b> 19 </b></font><font color="#00ffff"> *</font><font color="#ff40ff"> </font><br>
- <font color="#ffff00"><b> 20 </b></font><font color="#00ffff"> </font><font color="#00ffff">* </font><font color="#ff40ff">@param</font><font color="#ffffff"><b> exp</b></font><font color="#00ffff"> ??????? </font><br>
- <font color="#ffff00"><b> 21 </b></font><font color="#00ffff"> * </font><font color="#ff40ff">@return</font><font color="#00ffff"> ????? </font><br>
- <font color="#ffff00"><b> 22 </b></font><font color="#00ffff"> */</font> <br>
- <font color="#ffff00"><b> 23 </b></font> <font color="#00ff00"><b>private</b></font> <font color="#00ff00"><b>static</b></font> <font color="#00ff00"><b>int</b></font> calc(String exp) { <br>
- <font color="#ffff00"><b> 24 </b></font> <font color="#00ffff">//???? </font><br>
- <font color="#ffff00"><b> 25 </b></font> Stack<Integer> num = <font color="#ff6060"><b>new</b></font> Stack<Integer>(); <br>
- <font color="#ffff00"><b> 26 </b></font> <font color="#00ffff">//???? </font><br>
- <font color="#ffff00"><b> 27 </b></font> Stack<Character> op = <font color="#ff6060"><b>new</b></font> Stack<Character>(); <br>
- <font color="#ffff00"><b> 28 </b></font><br>
- <font color="#ffff00"><b> 29 </b></font> op.add(<font color="#ff40ff"><b>'#'</b></font>); <br>
- <font color="#ffff00"><b> 30 </b></font> System.out.println(<font color="#ff40ff"><b>"push:"</b></font>+op.peek());<br>
- <font color="#ffff00"><b> 31 </b></font> <font color="#00ff00"><b>int</b></font> i = <font color="#ff40ff"><b>0</b></font>; <br>
- <font color="#ffff00"><b> 32 </b></font> <font color="#00ff00"><b>char</b></font> ch = exp.charAt(i); <br>
- <font color="#ffff00"><b> 33 </b></font> <font color="#00ff00"><b>boolean</b></font> flag = <font color="#ff40ff"><b>false</b></font>;<font color="#00ffff">//????????????????????????????????????????? </font><br>
- <font color="#ffff00"><b> 34 </b></font> <font color="#ffffff"><b>while</b></font>(ch != <font color="#ff40ff"><b>'#'</b></font> || op.peek() != <font color="#ff40ff"><b>'#'</b></font>) { <br>
- <font color="#ffff00"><b> 35 </b></font> <font color="#ffffff"><b>if</b></font>(ch >= <font color="#ff40ff"><b>'0'</b></font> && ch <= <font color="#ff40ff"><b>'9'</b></font>) { <br>
- <font color="#ffff00"><b> 36 </b></font> <font color="#ffffff"><b>if</b></font>(flag) { <br>
- <font color="#ffff00"><b> 37 </b></font> <font color="#00ff00"><b>int</b></font> tmp = num.pop(); <br>
- <font color="#ffff00"><b> 38 </b></font> num.push(tmp * <font color="#ff40ff"><b>10</b></font> + Integer.parseInt(ch + <font color="#ff40ff"><b>""</b></font>)); <br>
- <font color="#ffff00"><b> 39 </b></font> System.out.println(<font color="#ff40ff"><b>"push:"</b></font>+num.peek());<br>
- <font color="#ffff00"><b> 40 </b></font> } <font color="#ffffff"><b>else</b></font> { <br>
- <font color="#ffff00"><b> 41 </b></font> num.push(Integer.parseInt(ch + <font color="#ff40ff"><b>""</b></font>)); <br>
- <font color="#ffff00"><b> 42 </b></font> System.out.println(<font color="#ff40ff"><b>"push:"</b></font>+num.peek());<br>
- <font color="#ffff00"><b> 43 </b></font> } <br>
- <font color="#ffff00"><b> 44 </b></font> flag = <font color="#ff40ff"><b>true</b></font>; <br>
- <font color="#ffff00"><b> 45 </b></font> i++; <br>
- <font color="#ffff00"><b> 46 </b></font> } <font color="#ffffff"><b>else</b></font> { <br>
- <font color="#ffff00"><b> 47 </b></font> flag = <font color="#ff40ff"><b>false</b></font>; <br>
- <font color="#ffff00"><b> 48 </b></font> <font color="#ffffff"><b>switch</b></font>(precede(op.peek(), ch)) { <br>
- <font color="#ffff00"><b> 49 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'<'</b></font>: <br>
- <font color="#ffff00"><b> 50 </b></font> op.push(ch); <br>
- <font color="#ffff00"><b> 51 </b></font> System.out.println(<font color="#ff40ff"><b>"push:"</b></font>+op.peek());<br>
- <font color="#ffff00"><b> 52 </b></font> i++; <br>
- <font color="#ffff00"><b> 53 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b> 54 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'='</b></font>: <br>
- <font color="#ffff00"><b> 55 </b></font> System.out.println(<font color="#ff40ff"><b>"pop:"</b></font>+op.peek());<br>
- <font color="#ffff00"><b> 56 </b></font> op.pop(); <br>
- <font color="#ffff00"><b> 57 </b></font> i++; <br>
- <font color="#ffff00"><b> 58 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b> 59 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'>'</b></font>: <br>
- <font color="#ffff00"><b> 60 </b></font> System.out.println(<font color="#ff40ff"><b>"pop:"</b></font>+num.peek());<br>
- <font color="#ffff00"><b> 61 </b></font> <font color="#00ff00"><b>int</b></font> num2 = num.pop(); <br>
- <font color="#ffff00"><b> 62 </b></font> System.out.println(<font color="#ff40ff"><b>"pop:"</b></font>+num.peek());<br>
- <font color="#ffff00"><b> 63 </b></font> <font color="#00ff00"><b>int</b></font> num1 = num.pop(); <br>
- <font color="#ffff00"><b> 64 </b></font> <font color="#00ff00"><b>int</b></font> result = operate(num1, op.pop(), num2); <br>
- <font color="#ffff00"><b> 65 </b></font> num.push(result); <br>
- <font color="#ffff00"><b> 66 </b></font> System.out.println(<font color="#ff40ff"><b>"push:"</b></font>+num.peek());<br>
- <font color="#ffff00"><b> 67 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b> 68 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'!'</b></font>: <br>
- <font color="#ffff00"><b> 69 </b></font> System.out.println(<font color="#ff40ff"><b>"?????????"</b></font>); <br>
- <font color="#ffff00"><b> 70 </b></font> <font color="#ffff00"><b>return</b></font> -<font color="#ff40ff"><b>1</b></font>; <br>
- <font color="#ffff00"><b> 71 </b></font> } <br>
- <font color="#ffff00"><b> 72 </b></font> } <br>
- <font color="#ffff00"><b> 73 </b></font> ch = exp.charAt(i); <br>
- <font color="#ffff00"><b> 74 </b></font> } <br>
- <font color="#ffff00"><b> 75 </b></font> <font color="#ffff00"><b>return</b></font> num.peek(); <br>
- <font color="#ffff00"><b> 76 </b></font> } <br>
- <font color="#ffff00"><b> 77 </b></font> <font color="#00ff00"><b>private</b></font> <font color="#00ff00"><b>static</b></font> <font color="#00ff00"><b>char</b></font> precede(<font color="#00ff00"><b>char</b></font> peek, <font color="#00ff00"><b>char</b></font> ch) { <br>
- <font color="#ffff00"><b> 78 </b></font> System.out.println(<font color="#ff40ff"><b>""</b></font>+peek+relation[getIndex(peek)][getIndex(ch)]+ch);<br>
- <font color="#ffff00"><b> 79 </b></font> <font color="#ffff00"><b>return</b></font> relation[getIndex(peek)][getIndex(ch)]; <br>
- <font color="#ffff00"><b> 80 </b></font> } <br>
- <font color="#ffff00"><b> 81 </b></font><br>
- <font color="#ffff00"><b> 82 </b></font> <font color="#00ffff">/**</font><font color="#ff40ff"> </font><br>
- <font color="#ffff00"><b> 83 </b></font><font color="#00ffff"> *</font><font color="#ff40ff"> </font><br>
- <font color="#ffff00"><b> 84 </b></font><font color="#00ffff"> </font><font color="#00ffff">* </font><font color="#ff40ff">@param</font><font color="#ffffff"><b> ch</b></font><font color="#00ffff"> ??? </font><br>
- <font color="#ffff00"><b> 85 </b></font><font color="#00ffff"> * </font><font color="#ff40ff">@return</font><font color="#00ffff"> ?????????+?-?*?/??????? </font><br>
- <font color="#ffff00"><b> 86 </b></font><font color="#00ffff"> */</font> <br>
- <font color="#ffff00"><b> 87 </b></font> <font color="#00ff00"><b>private</b></font> <font color="#00ff00"><b>static</b></font> <font color="#00ff00"><b>int</b></font> getIndex(<font color="#00ff00"><b>char</b></font> ch) { <br>
- <font color="#ffff00"><b> 88 </b></font> <font color="#00ff00"><b>int</b></font> index = -<font color="#ff40ff"><b>1</b></font>; <br>
- <font color="#ffff00"><b> 89 </b></font> <font color="#ffffff"><b>switch</b></font>(ch) { <br>
- <font color="#ffff00"><b> 90 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'+'</b></font>: <br>
- <font color="#ffff00"><b> 91 </b></font> index = <font color="#ff40ff"><b>0</b></font>; <br>
- <font color="#ffff00"><b> 92 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b> 93 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'-'</b></font>: <br>
- <font color="#ffff00"><b> 94 </b></font> index = <font color="#ff40ff"><b>1</b></font>; <br>
- <font color="#ffff00"><b> 95 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b> 96 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'*'</b></font>: <br>
- <font color="#ffff00"><b> 97 </b></font> index = <font color="#ff40ff"><b>2</b></font>; <br>
- <font color="#ffff00"><b> 98 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b> 99 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'/'</b></font>: <br>
- <font color="#ffff00"><b>100 </b></font> index = <font color="#ff40ff"><b>3</b></font>; <br>
- <font color="#ffff00"><b>101 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b>102 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'('</b></font>: <br>
- <font color="#ffff00"><b>103 </b></font> index = <font color="#ff40ff"><b>4</b></font>; <br>
- <font color="#ffff00"><b>104 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b>105 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>')'</b></font>: <br>
- <font color="#ffff00"><b>106 </b></font> index = <font color="#ff40ff"><b>5</b></font>; <br>
- <font color="#ffff00"><b>107 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b>108 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'#'</b></font>: <br>
- <font color="#ffff00"><b>109 </b></font> index = <font color="#ff40ff"><b>6</b></font>; <br>
- <font color="#ffff00"><b>110 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b>111 </b></font> } <br>
- <font color="#ffff00"><b>112 </b></font> <font color="#ffff00"><b>return</b></font> index; <br>
- <font color="#ffff00"><b>113 </b></font> } <br>
- <font color="#ffff00"><b>114 </b></font><br>
- <font color="#ffff00"><b>115 </b></font> <font color="#00ffff">/**</font><font color="#ff40ff"> </font><br>
- <font color="#ffff00"><b>116 </b></font><font color="#00ffff"> *</font><font color="#ff40ff"> </font><br>
- <font color="#ffff00"><b>117 </b></font><font color="#00ffff"> </font><font color="#00ffff">* </font><font color="#ff40ff">@param</font><font color="#ffffff"><b> num1</b></font><font color="#00ffff"> ?????? </font><br>
- <font color="#ffff00"><b>118 </b></font><font color="#00ffff"> * </font><font color="#ff40ff">@param</font><font color="#ffffff"><b> ch</b></font><font color="#00ffff"> ??? </font><br>
- <font color="#ffff00"><b>119 </b></font><font color="#00ffff"> * </font><font color="#ff40ff">@param</font><font color="#ffffff"><b> num2</b></font><font color="#00ffff"> ?????? </font><br>
- <font color="#ffff00"><b>120 </b></font><font color="#00ffff"> * </font><font color="#ff40ff">@return</font><font color="#00ffff"> ???? </font><br>
- <font color="#ffff00"><b>121 </b></font><font color="#00ffff"> */</font> <br>
- <font color="#ffff00"><b>122 </b></font> <font color="#00ff00"><b>private</b></font> <font color="#00ff00"><b>static</b></font> <font color="#00ff00"><b>int</b></font> operate(<font color="#00ff00"><b>int</b></font> num1, <font color="#00ff00"><b>char</b></font> ch, <font color="#00ff00"><b>int</b></font> num2) { <br>
- <font color="#ffff00"><b>123 </b></font> <font color="#00ff00"><b>int</b></font> result = <font color="#ff40ff"><b>0</b></font>; <br>
- <font color="#ffff00"><b>124 </b></font> <font color="#ffffff"><b>switch</b></font>(ch) { <br>
- <font color="#ffff00"><b>125 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'+'</b></font>: <br>
- <font color="#ffff00"><b>126 </b></font> result = num1 + num2; <br>
- <font color="#ffff00"><b>127 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b>128 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'-'</b></font>: <br>
- <font color="#ffff00"><b>129 </b></font> result = num1 - num2; <br>
- <font color="#ffff00"><b>130 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b>131 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'*'</b></font>: <br>
- <font color="#ffff00"><b>132 </b></font> result = num1 * num2; <br>
- <font color="#ffff00"><b>133 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b>134 </b></font> <font color="#ffff00"><b>case</b></font> <font color="#ff40ff"><b>'/'</b></font>: <br>
- <font color="#ffff00"><b>135 </b></font> result = num1 / num2; <br>
- <font color="#ffff00"><b>136 </b></font> <font color="#ffffff"><b>break</b></font>; <br>
- <font color="#ffff00"><b>137 </b></font> } <br>
- <font color="#ffff00"><b>138 </b></font> <font color="#ffff00"><b>return</b></font> result; <br>
- <font color="#ffff00"><b>139 </b></font> } <br>
- <font color="#ffff00"><b>140 </b></font>} <br>
- </body>
- </html>