andorid简单计算器java源码_制作一个简易计算器——基于Android Studio实现

1 packagecom.example.lenovo.calculator;2

3

4

5 importandroid.app.Activity;6 importandroid.content.Context;7 importandroid.os.Bundle;8 importandroid.view.View;9 importandroid.view.View.OnClickListener;10 importandroid.widget.Button;11 importandroid.widget.CheckBox;12 importandroid.widget.EditText;13

14 importjava.io.FileInputStream;15 importjava.io.FileNotFoundException;16 importjava.io.FileOutputStream;17 importjava.io.IOException;18

19 public class MainActivity extendsActivity {20 /**

21 * Called when the activity is first created.22 */

23 private EditText output = null;24 private EditText input = null;25 private Button btn0 = null;26 private Button btn1 = null;27 private Button btn2 = null;28 private Button btn3 = null;29 private Button btn4 = null;30 private Button btn5 = null;31 private Button btn6 = null;32 private Button btn7 = null;33 private Button btn8 = null;34 private Button btn9 = null;35 private Button btnadd = null;36 private Button btnsubtract = null;37 private Button btnmultiply = null;38 private Button btndivide = null;39 private Button btnclear = null;40 private Button btnresult = null;41 private Button btndot = null;42

43 private EditText errorzero = null;44

45 private EditText resultText = null;46 private Button writeButton = null;47 private Button readButton = null;48 private CheckBox appendBox = null;49 private EditText textView = null;50 private EditText displayView = null;51 public String FILE_NAME = "fileDemo.txt";52

53

54 private String str = "";//保存数字

55 private String strold = "";//原数字

56 private char act = ' ';//记录“加减乘除等于”符号

57 private int count = 0;//判断要计算的次数,如果超过一个符号,先算出来一部分

58 private Float result = null;//计算的输出结果

59 private Boolean errBoolean = false;//有错误的时候为true,无错为false

60 private Boolean flagBoolean = false;//一个标志,如果为true,可以响应运算消息,如果为false,不响应运算消息,只有前面是数字才可以响应运算消息

61 private Boolean flagDot = false; //小数点标志位

62

63

64

65 @Override66 public voidonCreate(Bundle savedInstanceState) {67 super.onCreate(savedInstanceState);68 setContentView(R.layout.activity_main);69

70 output =(EditText) findViewById(R.id.output);71 input =(EditText) findViewById(R.id.input);72

73 errorzero =(EditText) findViewById(R.id.errorzero);74 resultText =(EditText) findViewById(R.id.resultText);75 writeButton =(Button) findViewById(R.id.writeButton);76 readButton =(Button) findViewById(R.id.readButton);77 textView =(EditText) findViewById(R.id.textView);78 displayView =(EditText) findViewById(R.id.displayView);79 appendBox =(CheckBox) findViewById(R.id.appendBox);80

81 btn0 =(Button) findViewById(R.id.zero);82 btn1 =(Button) findViewById(R.id.one);83 btn2 =(Button) findViewById(R.id.two);84 btn3 =(Button) findViewById(R.id.three);85 btn4 =(Button) findViewById(R.id.four);86 btn5 =(Button) findViewById(R.id.five);87 btn6 =(Button) findViewById(R.id.six);88 btn7 =(Button) findViewById(R.id.seven);89 btn8 =(Button) findViewById(R.id.eight);90 btn9 =(Button) findViewById(R.id.nine);91 btnadd =(Button) findViewById(R.id.add);92 btnsubtract =(Button) findViewById(R.id.subtract);93 btnmultiply =(Button) findViewById(R.id.multiply);94 btndivide =(Button) findViewById(R.id.divide);95 btnclear =(Button) findViewById(R.id.clear);96 btnresult =(Button) findViewById(R.id.result);97 btndot =(Button) findViewById(R.id.dot);98 //设置按钮侦听事件

99 btn0.setOnClickListener(listener);100 btn1.setOnClickListener(listener);101 btn2.setOnClickListener(listener);102 btn3.setOnClickListener(listener);103 btn4.setOnClickListener(listener);104 btn5.setOnClickListener(listener);105 btn6.setOnClickListener(listener);106 btn7.setOnClickListener(listener);107 btn8.setOnClickListener(listener);108 btn9.setOnClickListener(listener);109 //执行运算

110 btnadd.setOnClickListener(listener);111 btnsubtract.setOnClickListener(listener);112 btnmultiply.setOnClickListener(listener);113 btndivide.setOnClickListener(listener);114 btnclear.setOnClickListener(listener);115 btnresult.setOnClickListener(listener);116

117 btndot.setOnClickListener(listener);118

119 writeButton.setOnClickListener(writelistener);120 readButton.setOnClickListener(readlistener);121

122

123 //ATTENTION: This was auto-generated to implement the App Indexing API.124 //Seehttps://g.co/AppIndexing/AndroidStudiofor more information.

125 }126

127

128 private OnClickListener listener = newOnClickListener() {129

130 public voidonClick(View v) {131 //TODO Auto-generated method stub

132 switch(v.getId()) {133 //输入数字

134 caseR.id.zero:135 num(0);136 break;137 caseR.id.one:138 num(1);139 break;140 caseR.id.two:141 num(2);142 break;143 caseR.id.three:144 num(3);145 break;146 caseR.id.four:147 num(4);148 break;149 caseR.id.five:150 num(5);151 break;152 caseR.id.six:153 num(6);154 break;155 caseR.id.seven:156 num(7);157 break;158 caseR.id.eight:159 num(8);160 break;161 caseR.id.nine:162 num(9);163 break;164

165 caseR.id.dot:166 dot();167 break;168 //执行运算

169 caseR.id.add:170 add();171 break;172 caseR.id.subtract:173 sub();174 break;175 caseR.id.multiply:176 multiply();177 break;178 caseR.id.divide:179 divide();180 break;181 caseR.id.clear:182 clear();183 break;184 //计算结果

185 caseR.id.result:186 result();187 if (!errBoolean &&flagBoolean) {188 output.setText(String.valueOf(result));189 }190 resultText.setText(strold + act + str + "=" + result+" ");191 break;192

193 default:194 break;195

196 }197 input.setText(strold + act +str);198 output.setText(String.valueOf(result));199

200

201 }202 };203

204 private OnClickListener writelistener = newOnClickListener() {205 @Override206 public voidonClick(View view) {207 //textView.setText("");

208

209 FileOutputStream fos = null;210 try{211 if(appendBox.isChecked()) {212 fos =openFileOutput(FILE_NAME, Context.MODE_APPEND);213 } else{214 fos =openFileOutput(FILE_NAME, Context.MODE_PRIVATE);215 }216 String text =resultText.getText().toString();217 fos.write(text.getBytes());218 textView.setText("文件写入成功,写入长度:" +text.length());219 //resultText.setText("");

220

221 } catch(FileNotFoundException e) {222 e.printStackTrace();223 } catch(IOException e) {224 e.printStackTrace();225 }226 finally{227 if (fos != null)228 try{229 fos.flush();230 fos.close();231 } catch(IOException e) {232 e.printStackTrace();233 }234 }235 }236 };237 private OnClickListener readlistener = newOnClickListener() {238 @Override239 public voidonClick(View view) {240

241 displayView.setText("");242 FileInputStream fis = null;243 try{244 fis =openFileInput(FILE_NAME);245 if (fis.available() == 0) {246 return;247 }248 byte[] readBytes = new byte[fis.available()];249 while (fis.read(readBytes) != -1) {250

251 }252 String text = newString(readBytes);253 displayView.setText(text);254 textView.setText("文件读取成功,写入长度:" +text.length());255

256 } catch(FileNotFoundException e) {257 e.printStackTrace();258 } catch(IOException e) {259 e.printStackTrace();260 }261

262 }263 };264

265 private voiddot() {266 //TODO Auto-generated method stub

267

268 if (!flagDot) {269 str = str + ".";270 flagBoolean = false;271 flagDot = true;272 }273 }274

275 private voidclear() {276 //TODO Auto-generated method stub

277 str = strold = "";278 count = 0;279 act = ' ';280 result = null;281 flagBoolean = false;282 flagDot = false;283 input.setText(strold + act +str);284 output.setText("");285 errorzero.setText("");286 displayView.setText("");287 textView.setText("");288 resultText.setText("");289 }290

291 private voiddivide() {292 //TODO Auto-generated method stub

293 if(flagBoolean) {294 check();295 act = '/';296 flagBoolean = false;297 }298 }299

300 private voidmultiply() {301 //TODO Auto-generated method stub

302 if(flagBoolean) {303 check();304 act = '*';305 flagBoolean = false;306 }307 }308

309 private voidsub() {310 //TODO Auto-generated method stub

311 if(flagBoolean) {312 check();313 act = '-';314 flagBoolean = false;315 }316 }317

318 private voidadd() {319 //TODO Auto-generated method stub

320 if(flagBoolean) {321 check();322 act = '+';323 flagBoolean = false;324 }325 }326

327 private voidcheck() {328 //TODO Auto-generated method stub

329 if (count >= 1) {330 result();331 str =String.valueOf(result);332 }333 strold =str;334 str = "";335 count++;336 flagDot = false;337 errorzero.setText("");338 }339

340 //计算输出结果

341 private voidresult() {342 //TODO Auto-generated method stub

343 if(flagBoolean) {344 Float a, b;345

346 a =Float.parseFloat(strold);347 b =Float.parseFloat(str);348

349 if (b == 0 && act == '/') {350 clear();351 errorzero.setText("除数不能为零!");352 //output.setText("除数不能为零!");353

354

355 //errBoolean=true;

356 }357

358

359 if (!errBoolean) {360 switch(act) {361 case '+':362 result = a +b;363 break;364 case '-':365 result = a -b;366 break;367 case '*':368 result = a *b;369 break;370 case '/':371 result = a /b;372 break;373

374 default:375 break;376 }377 }378

379

380 }381 }382

383 private void num(inti) {384 //TODO Auto-generated method stub

385 str = str +String.valueOf(i);386 flagBoolean = true;387 errorzero.setText("");388 }389

390 }

你可能感兴趣的:(andorid简单计算器java源码_制作一个简易计算器——基于Android Studio实现)