安卓版四则运算

  1 package com.example.add;

  2 

  3 import java.io.BufferedWriter;

  4 import java.io.File;

  5 import java.io.FileWriter;

  6 import java.io.IOException;

  7 

  8 import com.example.add.opt;

  9 

 10 import java.text.DecimalFormat;

 11 

 12 import android.support.v7.app.ActionBarActivity;

 13 import android.support.v7.app.ActionBar;

 14 import android.support.v4.app.Fragment;

 15 import android.text.InputType;

 16 import android.os.Bundle;

 17 import android.view.LayoutInflater;

 18 import android.view.Menu;

 19 import android.view.MenuItem;

 20 import android.view.View;

 21 import android.view.ViewGroup;

 22 import android.os.Build;

 23 import android.app.Activity;

 24 import android.os.Bundle;

 25 import android.view.View;

 26 import android.widget.Button;

 27 import android.widget.EditText;

 28 import android.widget.TextView;

 29 import android.widget.Toast;

 30 

 31     public class MainActivity extends Activity {

 32         

 33         int x;//题目个数

 34         int y=0;

 35         int n;

 36         int i=1;

 37         char[] op = { '+', '-', '*', '/' };

 38         int[] nov = new int[4];

 39         int zf;//控制正负

 40         int zz;//题型控制

 41         String str = new String();

 42         String str1 = new String();

 43         int[] num1 = new int[5];

 44         String s[] = new String[5];

 45         int num2=0;

 46         float[] anser=new float[5];//用户的答案

 47         float[] trueanser=new float[5];//正确答案

 48         File file;

 49         int a=0;

 50         int b=0;

 51         int bb=0;

 52         // int c = 0;

 53         opt opt=new opt();;

 54         EditText editText,xs;

 55         StringBuffer text,text1;

 56         String number_1="",number_2="";

 57         boolean clicked=false;

 58         byte style=0;

 59         Button btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9,btn_0;

 60         Button start,btn_eq,btn_dot,btn_clear;

 61         /** Called when the activity is first created. */

 62         @Override

 63         public void onCreate(Bundle savedInstanceState) {

 64             super.onCreate(savedInstanceState);

 65             setContentView(R.layout.fragment_main);

 66             text=new StringBuffer();

 67             editText=(EditText)findViewById(R.id.result);

 68             xs=(EditText)findViewById(R.id.xs);

 69             //editText.setFocusable(false);

 70             btn_1=(Button) findViewById(R.id.btn_1);

 71             btn_1.setOnClickListener(new Button.OnClickListener(){

 72 

 73                 public void onClick(View v) {

 74                     // TODO Auto-generated method stub

 75                     if(clicked){

 76                         editText.setText("");

 77                         clicked=false;

 78                         text.setLength(0);

 79                     }

 80                     text.append("7");

 81                     editText.setText(text.toString());

 82                     

 83                 }

 84                 

 85             });

 86             btn_2=(Button) findViewById(R.id.btn_2);

 87             btn_2.setOnClickListener(new Button.OnClickListener(){

 88                 

 89                 public void onClick(View v) {

 90                     // TODO Auto-generated method stub

 91                     if(clicked){

 92                         editText.setText("");

 93                         clicked=false;

 94                         text.setLength(0);

 95                     }

 96                     text.append("8");

 97                     editText.setText(text.toString());

 98                 }

 99             });

100             btn_3=(Button) findViewById(R.id.btn_3);

101             btn_3.setOnClickListener(new Button.OnClickListener(){

102                 

103                 public void onClick(View v) {

104                     // TODO Auto-generated method stub

105                     if(clicked){

106                         editText.setText("");

107                         clicked=false;

108                         text.setLength(0);

109                     }

110                     text.append("9");

111                     editText.setText(text.toString());

112                 }

113                 

114             });

115             btn_4=(Button) findViewById(R.id.btn_4);

116             btn_4.setOnClickListener(new Button.OnClickListener(){

117                 

118                 public void onClick(View v) {

119                     // TODO Auto-generated method stub

120                     if(clicked){

121                         editText.setText("");

122                         clicked=false;

123                         text.setLength(0);

124                     }

125                     text.append("4");

126                     editText.setText(text.toString());

127                 }

128                 

129             });

130             btn_5=(Button) findViewById(R.id.btn_5);

131             btn_5.setOnClickListener(new Button.OnClickListener(){

132                 

133                 public void onClick(View v) {

134                     // TODO Auto-generated method stub

135                     if(clicked){

136                         editText.setText("");

137                         clicked=false;

138                         text.setLength(0);

139                     }

140                     text.append("5");

141                     editText.setText(text.toString());

142                 }

143                 

144             });

145             btn_6=(Button) findViewById(R.id.btn_6);

146             btn_6.setOnClickListener(new Button.OnClickListener(){

147                 

148                 public void onClick(View v) {

149                     // TODO Auto-generated method stub

150                     if(clicked){

151                         editText.setText("");

152                         clicked=false;

153                         text.setLength(0);

154                     }

155                     text.append("6");

156                     editText.setText(text.toString());

157                 }

158                 

159             });

160             btn_7=(Button) findViewById(R.id.btn_7);

161             btn_7.setOnClickListener(new Button.OnClickListener(){

162                 

163                 public void onClick(View v) {

164                     // TODO Auto-generated method stub

165                     if(clicked){

166                         editText.setText("");

167                         clicked=false;

168                         text.setLength(0);

169                     }

170                     text.append("1");

171                     editText.setText(text.toString());

172                 }

173                 

174             });

175             btn_8=(Button) findViewById(R.id.btn_8);

176             btn_8.setOnClickListener(new Button.OnClickListener(){

177                 

178                 public void onClick(View v) {

179                     // TODO Auto-generated method stub

180                     if(clicked){

181                         editText.setText("");

182                         clicked=false;

183                         text.setLength(0);

184                     }

185                     text.append("2");

186                     editText.setText(text.toString());

187                 }

188                 

189             });

190             btn_9=(Button) findViewById(R.id.btn_9);

191             btn_9.setOnClickListener(new Button.OnClickListener(){

192                 

193                 public void onClick(View v) {

194                     // TODO Auto-generated method stub

195                     if(clicked){

196                         editText.setText("");

197                         clicked=false;

198                         text.setLength(0);

199                     }

200                     text.append("3");

201                     editText.setText(text.toString());

202                 }

203                 

204             });

205             btn_0=(Button) findViewById(R.id.btn_0);

206             btn_0.setOnClickListener(new Button.OnClickListener(){

207                 

208                 public void onClick(View v) {

209                     // TODO Auto-generated method stub

210                     if(clicked){

211                         editText.setText("");

212                         clicked=false;

213                         text.setLength(0);

214                     }

215                     text.append("0");

216                     editText.setText(text.toString());

217                 }

218                 

219             });

220             btn_dot=(Button) findViewById(R.id.btn_dot);

221             btn_dot.setOnClickListener(new Button.OnClickListener(){

222                 

223                 public void onClick(View v) {

224                     // TODO Auto-generated method stub

225                     if(clicked){

226                         editText.setText("");

227                         clicked=false;

228                         text.setLength(0);

229                     }

230                     if(editText.getText().toString().indexOf(".")==-1){//已经有.了

231                         if(text.length()==0){

232                             text.append("0.");

233                         }else{

234                             text.append(".");

235                         }

236                         editText.setText(text.toString());

237                     }

238                 }

239                 

240             });

241             btn_eq=(Button) findViewById(R.id.btn_eq);

242             btn_eq.setOnClickListener(new Button.OnClickListener(){

243                 

244                 public void onClick(View v) {

245                     // TODO Auto-generated method stub

246                     if(b==1)

247                     {

248                         if(editText.getText().toString().length()!=0)

249                         {

250                             try

251                             {

252                                 x=Integer.parseInt(editText.getText().toString());

253                                 if(x>=0 && x<=5)b++;

254                                 else Toast.makeText(MainActivity.this, "输入有误", 1).show();

255                             }

256                             catch(NumberFormatException x)

257                             {

258                                 Toast.makeText(MainActivity.this, "输入有误", 1).show();

259                             }

260                         }

261                         else Toast.makeText(MainActivity.this, "输入有误", 1).show();

262                         editText.setText("");

263                         number_1="";

264                         number_2="";

265                         style=0;

266                         clicked=false;

267                         text.setLength(0);

268                     }

269                     if(b==2)

270                     {

271                         if(n!=0)anser[i-2]=Float.parseFloat(editText.getText().toString());

272                         str1="第"+i+"条题目为:";

273                         n=(int)(Math.random() * 4 + 2);//随机出运算符的数量

274                         zz=(int)(Math.random()*2);

275                         for(int j=0;j<n;j++)

276                         {

277                             //zf=(int)(Math.random()*2);

278                             //if(zf==0)//279                             //    num1[j]=-(int)(Math.random()*100);//产生随机数

280                             //else        //

281                                 num1[j]=(int)(Math.random()*100);

282                                 if(zz==1)num1[j]=(int)(Math.random()*10+1);

283                         }

284                         for(int k=0;k<n-1;k++)

285                         {

286                             nov[k]=(int)(Math.random()*4);

287                             if(nov[k]==3&&num1[k+1]==0)

288                             {

289                                 do

290                                 {

291                                     num1[k+1]=(int)(Math.random()*100);

292                                 }while(num1[k+1]==0);

293                             }

294                         }

295                         str="";

296                         if(zz==0)

297                         {

298                             for(int j=0;j<n;j++)

299                             {

300                                 //if(num1[j]<0)str=str+"("+String.valueOf(num1[j])+")";

301                                 str=str+String.valueOf(num1[j]);

302                                 if(j==n-1)

303                                 {

304                                     //try

305                                     //{

306                                         //int ii=0;

307                                         try{

308                                             trueanser[i-1]=opt.Math(str);

309                                             DecimalFormat df = new DecimalFormat("#.00");

310                                             trueanser[i-1]=Float.parseFloat(df.format(trueanser[i-1]));

311                                         } catch (Exception e1) {

312                                             // TODO 自动生成的 catch 块

313                                             e1.printStackTrace();

314                                         }

315                                     //}

316                                     /*catch (Exception e1)

317                                     {

318                                         System.out.println(e1);

319                                         //e1.printStackTrace();

320                                     }*/

321                                     str=str+"=";

322                                     //str=str+String.valueOf(trueanser[i-1]);

323                                     xs.setText(str1+str);

324                                     break;

325                                 }

326                                 str=str+op[nov[j]];

327                             }

328                         }

329                         if(zz==1)

330                         {

331                             trueanser[i-1]=1;

332                             str=String.valueOf(num1[0])+"!=";

333                             for(int j=1;j<=num1[0];j++)

334                             trueanser[i-1]=trueanser[i-1]*j;

335                             //str=str+String.valueOf(trueanser[i-1]);

336                             xs.setText(str1+str);

337                         }

338                         if(i==x+1)

339                         {

340                             b=3;

341                             anser[i-2]=Float.parseFloat(editText.getText().toString());

342                         }

343                         else i++;

344                         editText.setText("");

345                         number_1="";

346                         number_2="";

347                         style=0;

348                         clicked=false;

349                         text.setLength(0);

350                     }

351                     if(b==3)

352                     {

353                         y=0;

354                         for(int j=0;j<x;j++)

355                         {

356                             if(anser[j]==trueanser[j])y++;

357                         }

358                         xs.setText("答题完成!答对"+y+"道!");

359                         b=0;

360                         editText.setText("");

361                         number_1="";

362                         number_2="";

363                         style=0;

364                         clicked=false;

365                         text.setLength(0);

366                     }

367                 }

368             });

369             start=(Button) findViewById(R.id.start);

370             start.setOnClickListener(new Button.OnClickListener(){

371                 

372                 public void onClick(View v) {

373                     // TODO Auto-generated method stub

374                     xs.setText("请输入出题数量!(1-5)");

375                     n=0;

376                     i=1;

377                     b=1;

378                 }

379             });

380             btn_clear=(Button) findViewById(R.id.btn_clear);

381             btn_clear.setOnClickListener(new Button.OnClickListener(){

382                 

383                 public void onClick(View v) {

384                     // TODO Auto-generated method stub

385                     editText.setText("");

386                     number_1="";

387                     number_2="";

388                     style=0;

389                     clicked=false;

390                     text.setLength(0);

391                 }

392             });

393         }

394     }
MainActivity
  1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  2     android:layout_width="fill_parent"

  3     android:layout_height="fill_parent"

  4     android:orientation="vertical" >

  5 

  6     <EditText

  7         android:id="@+id/result"

  8         android:layout_width="match_parent"

  9         android:layout_height="wrap_content"

 10         android:cursorVisible="false"

 11         android:digits="1234567890."

 12         android:ems="10"

 13         android:focusable="false"

 14         android:numeric="decimal"

 15         android:singleLine="true" />

 16 

 17     <TableLayout

 18         android:layout_width="fill_parent"

 19         android:layout_height="wrap_content"

 20         android:stretchColumns="0,1,2,3" >

 21 

 22         <TableRow>

 23 

 24             <Button

 25                 android:id="@+id/btn_1"

 26                 android:text="7" />

 27 

 28             <Button

 29                 android:id="@+id/btn_2"

 30                 android:text="8" />

 31 

 32             <Button

 33                 android:id="@+id/btn_3"

 34                 android:text="9" />

 35         </TableRow>

 36 

 37         <TableRow>

 38 

 39             <Button

 40                 android:id="@+id/btn_4"

 41                 android:text="4" />

 42 

 43             <Button

 44                 android:id="@+id/btn_5"

 45                 android:text="5" />

 46 

 47             <Button

 48                 android:id="@+id/btn_6"

 49                 android:text="6" />

 50         </TableRow>

 51 

 52         <TableRow>

 53 

 54             <Button

 55                 android:id="@+id/btn_7"

 56                 android:text="1" />

 57 

 58             <Button

 59                 android:id="@+id/btn_8"

 60                 android:text="2" />

 61 

 62             <Button

 63                 android:id="@+id/btn_9"

 64                 android:text="3" />

 65         </TableRow>

 66 

 67         <TableRow>

 68 

 69             <Button

 70                 android:id="@+id/btn_dot"

 71                 android:text="." />

 72 

 73             <Button

 74                 android:id="@+id/btn_0"

 75                 android:text="0" />

 76 

 77             <Button

 78                 android:id="@+id/btn_eq"

 79                 android:text="确定" />

 80         </TableRow>

 81     </TableLayout>

 82 

 83     <Button

 84         android:id="@+id/btn_clear"

 85         android:layout_width="fill_parent"

 86         android:layout_height="wrap_content"

 87         android:text="清除" />

 88 

 89     <EditText

 90         android:id="@+id/xs"

 91         android:layout_width="wrap_content"

 92         android:layout_height="wrap_content"

 93         android:focusable="false"

 94         android:text="欢迎使用四则运算程序!" >

 95 

 96         <requestFocus />

 97     </EditText>

 98 

 99     <Button

100         android:id="@+id/start"

101         android:layout_width="wrap_content"

102         android:layout_height="wrap_content"

103         android:text="开始" />

104 

105 </LinearLayout>
fragment_main
 1 package com.example.add;

 2 import java.util.Stack;

 3 public class opt

 4 {

 5     public float Math(String str) throws Exception

 6     { 

 7         String[] operater =new String[20]; 

 8         String[] number = new String[20]; 

 9         Stack countStack1 = new Stack(); 

10         Stack countStack2 = new Stack(); 

11         float result =0;

12         float x=0;

13         number = str.split("\\/|\\*|\\+|\\-"); 

14         operater= str.split("\\d+");

15         if(number.length<2)throw new Exception("请输入两位计算数以上!");

16         for(int i = 0; i<number.length;i++)

17         {

18             try

19             {

20                 x=Float.parseFloat(number[i]);

21             }

22             catch(NumberFormatException e)

23             {

24                 throw new Exception("输入错误!请重新输入!");

25             }

26             if(operater[i].equals("/"))if(x==0)throw new Exception("除数不能为0!");

27             countStack1.push(number[i]);

28             if(i!=number.length-1)

29             {

30                 if(operater[i+1]!=null)countStack1.push(operater[i+1]);

31             }

32         }

33         while(!countStack1.isEmpty())countStack2.push(countStack1.pop());

34         String op;

35         while(!countStack2.isEmpty())

36         { 

37             result=0;

38             op=countStack2.pop().toString();

39             if(op.equals("*"))

40             {

41                 result=Float.parseFloat(countStack1.pop().toString())*Float.parseFloat(countStack2.pop().toString());

42                 if(number.length==2)return result;

43                 countStack1.push(result);

44                 continue;

45             }

46             if(op.equals("/"))

47             {

48                 result=Float.parseFloat(countStack1.pop().toString())/Float.parseFloat(countStack2.pop().toString());

49                 if(number.length==2)return result;

50                 countStack1.push(result);

51                 continue;

52             }

53             countStack1.push(op);

54         }

55         while(!countStack1.isEmpty())countStack2.push(countStack1.pop());

56         while(!countStack2.isEmpty())

57         {

58             result=0;

59             op = countStack2.pop().toString();

60             if(op.equals("+"))

61             {

62                 result=Float.parseFloat(countStack1.pop().toString())+Float.parseFloat(countStack2.pop().toString());

63                 countStack1.push(result);

64                 continue;

65             }

66             if(op.equals("-"))

67             {

68                 result=Float.parseFloat(countStack1.pop().toString())-Float.parseFloat(countStack2.pop().toString());

69                 countStack1.push(result);

70                 continue;

71             }

72             countStack1.push(op);

73         }

74         return result;

75     }

76 }
opt

这一次将我们之前的程序转换成了安卓应用版,主要功能尚未有多大变化,接下来几天将会继续改进!

程序截图:安卓版四则运算

PS:程序界面比较简陋!我们会试着改进的!

 

你可能感兴趣的:(四则运算)