标签:
1 import java.math.BigDecimal;
2 import java.text.NumberFormat;
3 import java.util.*;
4 public class Core {
5 public int calc(String zifu,int max,int fanwei1,int fanwei2,int jingdu) throws ChushulingException, fanweiException, zifushuException
6 {
7 float a[]=new float [20];
8 int b[]=new int [20];
9 char c[]=new char [20];
10 int j=0;
11 int shu;
12 float sum = 0;
13 String fu="+-/*";
14 //System.out.println(zifu.length());
15 for(int i=0;i<zifu.length();i++)
16 {
17 if(zifu.charAt(i)==‘+‘)
18 {
19 b[j]=i;
20 c[j]=‘+‘;
21 j++; //System.out.println("++++");
22 }
23 else if(zifu.charAt(i)==‘-‘)
24 {
25 b[j]=i;
26 c[j]=‘-‘;
27 j++; // System.out.println("---");
28 }
29 else if(zifu.charAt(i)==‘*‘)
30 {
31 b[j]=i;
32 c[j]=‘*‘;
33 j++;
34 }
35 else if(zifu.charAt(i)==‘/‘)
36 {
37 b[j]=i;
38 c[j]=‘/‘;
39 j++;
40 }
41
42 }
43 //System.out.println(j);
44 //System.out.println(zifu.substring(2,5));
45 for(int i=0;i<j+1;i++)
46 {
47 if(i==0) a[i]=Integer.parseInt(zifu.substring(0,b[i]));
48 else if(i==j) a[i]=Integer.parseInt(zifu.substring(b[i-1]+1,zifu.length()));
49 else a[i]=Integer.parseInt(zifu.substring(b[i-1]+1,b[i]));
50 }
51
52 /*for(int i=0;i<j+1;i++)
53 {
54 System.out.print(a[i]+" ");
55 }
56 for(int i=0;i<j;i++)
57 {
58 System.out.println(c[i]);
59 }*/
60 String yunsuanfu1=String.valueOf(c);
61 if(j-1>max)
62 {
63 throw new zifushuException("字符数大于"+max+"");
64
65 }
66 for( shu=0;shu<j+1;shu++)
67 {//System.out.println("111");
68 if(a[shu]>fanwei2||a[shu]<fanwei1)
69 {
70 throw new fanweiException("有些数字不在范围内");
71
72 }
73 }
74 //System.out.println(j+"!!!!!!!");
75 StringBuffer yunsuanfu=new StringBuffer(yunsuanfu1);
76 //System.out.println(yunsuanfu.indexOf("*"));
77 //System.out.println(yunsuanfu);
78 //System.out.println(yunsuanfu.indexOf("*"));
79 while(yunsuanfu.indexOf("*")!=-1||yunsuanfu.indexOf("/")!=-1)
80 {
81 if(yunsuanfu.indexOf("/")==-1&&yunsuanfu.indexOf("*")!=-1)
82 {
83 sum=a[yunsuanfu.indexOf("*")]*a[yunsuanfu.indexOf("*")+1];
84 a[yunsuanfu.indexOf("*")]=a[yunsuanfu.indexOf("*")]*a[yunsuanfu.indexOf("*")+1];
85 for(int i=yunsuanfu.indexOf("*")+1;i<yunsuanfu.length()-1;i++)
86 {
87 a[i]=a[i+1];
88 }
89
90 //System.out.println(sum);
91 yunsuanfu.delete(yunsuanfu.indexOf("*"), yunsuanfu.indexOf("*")+1);
92 }
93
94 else if(yunsuanfu.indexOf("*")<yunsuanfu.indexOf("/")&&yunsuanfu.indexOf("*")!=-1)
95 {
96 sum=a[yunsuanfu.indexOf("*")]*a[yunsuanfu.indexOf("*")+1];
97 a[yunsuanfu.indexOf("*")]=a[yunsuanfu.indexOf("*")]*a[yunsuanfu.indexOf("*")+1];
98 for(int i=yunsuanfu.indexOf("*")+1;i<yunsuanfu.length()-1;i++)
99 {
100 a[i]=a[i+1];
101 }
102 //System.out.println(sum);
103
104 yunsuanfu.delete(yunsuanfu.indexOf("*"), yunsuanfu.indexOf("*")+1);
105 }
106 else if(yunsuanfu.indexOf("/")<yunsuanfu.indexOf("*")&&yunsuanfu.indexOf("/")!=-1)
107 {
108 if(a[yunsuanfu.indexOf("/")+1]==0)
109 {
110 throw new ChushulingException("除数不能为0!");
111 }
112 sum=a[yunsuanfu.indexOf("/")]/a[yunsuanfu.indexOf("/")+1];
113 a[yunsuanfu.indexOf("/")]=a[yunsuanfu.indexOf("/")]/a[yunsuanfu.indexOf("/")+1];
114 for(int i=yunsuanfu.indexOf("/")+1;i<yunsuanfu.length()-1;i++)
115 {
116 a[i]=a[i+1];
117 }
118 //System.out.println(sum);
119
120 yunsuanfu.delete(yunsuanfu.indexOf("/"), yunsuanfu.indexOf("/")+1);
121 }
122 else if(yunsuanfu.indexOf("*")==-1&&yunsuanfu.indexOf("/")!=-1)
123 {
124 if(a[yunsuanfu.indexOf("/")+1]==0)
125 {
126 throw new ChushulingException("除数不能为0!");
127 }
128 sum=a[yunsuanfu.indexOf("/")]/a[yunsuanfu.indexOf("/")+1];
129 a[yunsuanfu.indexOf("/")]=a[yunsuanfu.indexOf("/")]/a[yunsuanfu.indexOf("/")+1];
130 for(int i=yunsuanfu.indexOf("/")+1;i<yunsuanfu.length()-1;i++)
131 {
132 a[i]=a[i+1];
133 }
134 //System.out.println(sum);
135
136 yunsuanfu.delete(yunsuanfu.indexOf("/"), yunsuanfu.indexOf("/")+1);
137 }
138 }
139 while(yunsuanfu.indexOf("+")!=-1||yunsuanfu.indexOf("-")!=-1)
140 {
141
142 if(yunsuanfu.indexOf("+")!=-1&&yunsuanfu.indexOf("+")<yunsuanfu.indexOf("-"))
143 {
144 sum=a[yunsuanfu.indexOf("+")]+a[yunsuanfu.indexOf("+")+1];
145 a[yunsuanfu.indexOf("+")]=a[yunsuanfu.indexOf("+")]+a[yunsuanfu.indexOf("+")+1];
146 for(int i=yunsuanfu.indexOf("+")+1;i<yunsuanfu.length()-1;i++)
147 {
148 a[i]=a[i+1];
149 }
150 yunsuanfu.delete(yunsuanfu.indexOf("+"), yunsuanfu.indexOf("+")+1);
151 // System.out.println(yunsuanfu);
152 //System.out.println(1);
153 }
154 else if(yunsuanfu.indexOf("-")!=-1)
155 {
156 sum=a[yunsuanfu.indexOf("-")]-a[yunsuanfu.indexOf("-")+1];
157 a[yunsuanfu.indexOf("-")]=a[yunsuanfu.indexOf("-")]-a[yunsuanfu.indexOf("-")+1];
158 for(int i=yunsuanfu.indexOf("-")+1;i<yunsuanfu.length()-1;i++)
159 {
160 a[i]=a[i+1];
161 }
162 yunsuanfu.delete(yunsuanfu.indexOf("-"), yunsuanfu.indexOf("-")+1);
163 //System.out.println(yunsuanfu);
164 //System.out.println(2);
165 }
166 else{
167 sum=a[yunsuanfu.indexOf("+")]+a[yunsuanfu.indexOf("+")+1];
168 a[yunsuanfu.indexOf("+")]=a[yunsuanfu.indexOf("+")]+a[yunsuanfu.indexOf("+")+1];
169 for(int i=yunsuanfu.indexOf("+")+1;i<yunsuanfu.length()-1;i++)
170 {
171 a[i]=a[i+1];
172 }
173 yunsuanfu.delete(yunsuanfu.indexOf("+"), yunsuanfu.indexOf("+")+1);
174 //System.out.println(yunsuanfu);
175 //System.out.println(3);
176 }
177 //System.out.println(sum);
178 }
179 BigDecimal bd = new BigDecimal(sum);
180 bd = bd.setScale(jingdu,BigDecimal.ROUND_HALF_UP);
181 System.out.println(bd);
182 System.out.println(yunsuanfu);
183 /*for(int i=0;i<j+1;i++)
184 {
185 System.out.print(a[i]+" ");
186 }*/
187 return 0;
188
189 }
190
191
192 }
1 import java.util.Scanner;
2
3 public class Calculator {
4
5 /**
6 * @param args
7 */
8 public static void main(String[] args) {
9 Core c=new Core();
10 try{
11 c.calc("20-8/2-20*5+5",4,-1000,1000,4);
12 }
13 catch(ChushulingException e)
14 {
15 System.out.println(e.getMessage());
16 e.printStackTrace();
17 }
18 catch(fanweiException e)
19 {
20 System.out.println(e.getMessage());
21 e.printStackTrace();
22 }
23 catch(zifushuException e)
24 {
25 System.out.println(e.getMessage());
26 e.printStackTrace();
27 }
28
29
30 }
31
32 }
class ChushulingException extends Exception
{
public ChushulingException(String msg)
{
super(msg);
}
}
class fanweiException extends Exception {
public fanweiException(String msg)
{
super(msg);
}
}
class zifushuException extends Exception {
public zifushuException(String msg)
{
super(msg);
}
}




标签:
原文地址:http://www.cnblogs.com/peipeipei/p/4603158.html