标签:
JAVA实现简单四则混合运算,说明:该计算器支持实则混合运算,如 2*(3+1 )/ 4-3 *9+ 8/ 3*4- 5,则输出:-19.333332 需要说明的事括号必须是英文的。源码如下仅供学习:运行后直接在Console里面敲然后回车即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
import
java.io.BufferedReader; import
java.io.IOException; import
java.io.InputStreamReader; import
java.util.ArrayList; public
class
Test_03 { public
static
void
main(String[] args){ //
String str=" 11 12 13 56 "; //
String[] data=str.split("\\s"); //
for(int i=0;i<data.length;i++){ //
System.out.println(data[i]); //
} BufferedReader
reader= null ; InputStreamReader
inputStreamReader= null ; //
ArrayList<String>opt=new ArrayList<String>(); try { System.out.println( "请输入表达式:或直接输入#结束运算!" ); inputStreamReader= new
InputStreamReader(System.in); reader= new
BufferedReader(inputStreamReader); String
str=reader.readLine(); while (!str.equals( "#" )){ System.out.println( "运算结果为:" +opt(str)+ "" ); System.out.println( "请输入表达式:或直接输入#结束运算!" ); str=reader.readLine(); } } catch (Exception
e){ e.printStackTrace(); } if (reader!= null ){ try
{ reader.close(); }
catch
(IOException e) { e.printStackTrace(); } } } public
static
float
opt(String s) throws
Exception{ if (s
== null
|| "" .equals(s.trim()))
{ return
0f; } int
a1=s.indexOf( "+" ); int
a2=s.indexOf( "-" ); int
a3=s.indexOf( "*" ); int
a4=s.indexOf( "/" ); int
a5=s.indexOf( "(" ); if (a1==- 1 &&a2==- 1 &&a3==- 1 &&a4==- 1 ){ if (s.trim()== null || "" .equals(s.trim())){ throw
new
Exception( "operate
error" ); } return
Float.parseFloat(s.trim()); } if (a5!=- 1 ){ int
a6=s.indexOf( ")" ); if (a6==- 1 ){ throw
new
Exception( "括号不匹配" ); } else { float
f=opt(s.substring(a5+ 1 ,a6).trim()); s=s.replace(s.substring(a5,a6+ 1 ),
String.valueOf(f)); return
opt(s); } } if (a1!=- 1 ){ return
opt(s.substring( 0 ,a1))+opt(s.substring(a1+ 1 ,s.length())); } if (a2!=- 1 ){ return
opt(s.substring( 0 ,a2))-opt(s.substring(a2+ 1 ,s.length())); } if (a3!=- 1 ){ return
opt(s.substring( 0 ,a3))*opt(s.substring(a3+ 1 ,s.length())); } if (a4!=- 1 ){ return
opt(s.substring( 0 ,a4))/opt(s.substring(a4+ 1 ,s.length())); } return
Integer.parseInt(s.trim()); } } |
标签:
原文地址:http://blog.csdn.net/u014311064/article/details/42284849