在原有的基礎上做了些許改動以及新增了一點小功能,以下是程式碼:
1 package com.example.add; 2 3 import java.io.File; 4 5 import com.example.add.opt; 6 import com.example.add.R; 7 8 import java.text.DecimalFormat; 9 10 import android.media.MediaPlayer; 11 import android.os.Bundle; 12 import android.view.View; 13 import android.app.Activity; 14 import android.widget.Button; 15 import android.widget.EditText; 16 import android.widget.Toast; 17 18 public class MainActivity extends Activity { 19 20 MediaPlayer mp; 21 int x;//題目個數 22 int y=0; 23 int n; 24 int i=1; 25 char[] op = { '+', '-', '*', '/' }; 26 int[] nov = new int[4]; 27 int zf;//控制正負 28 int zz;//題型控制 29 String str = new String(); 30 String str1 = new String(); 31 int[] num1 = new int[5]; 32 String s[] = new String[5]; 33 int num2=0; 34 float[] anser=new float[5];//使用者的答案 35 float[] trueanser=new float[5];//正確答案 36 File file; 37 int a=0; 38 int b=0; 39 int bb=0; 40 long begin=0,end=0,time=0; 41 String ss; 42 // int c = 0; 43 opt opt=new opt();; 44 EditText editText,xs; 45 StringBuffer text,text1; 46 String number_1="",number_2=""; 47 boolean clicked=false; 48 byte style=0; 49 Button btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9,btn_0; 50 Button start,btn_eq,btn_dot,btn_clear,btn_m1,btn_m2,btn_m3; 51 private Button btn_dot1; 52 /** Called when the activity is first created. */ 53 54 public void stop(){ 55 mp.reset(); 56 mp=MediaPlayer.create(this, R.raw.unity); 57 } 58 @Override 59 public void onCreate(Bundle savedInstanceState) { 60 super.onCreate(savedInstanceState); 61 setContentView(R.layout.fragment_main); 62 text=new StringBuffer(); 63 editText=(EditText)findViewById(R.id.result); 64 xs=(EditText)findViewById(R.id.xs); 65 mp=MediaPlayer.create(this, R.raw.unity); 66 //editText.setFocusable(false); 67 btn_1=(Button) findViewById(R.id.btn_1); 68 btn_1.setOnClickListener(new Button.OnClickListener(){ 69 70 public void onClick(View v) { 71 // TODO Auto-generated method stub 72 if(clicked){ 73 editText.setText(""); 74 clicked=false; 75 text.setLength(0); 76 } 77 text.append("7"); 78 editText.setText(text.toString()); 79 80 } 81 82 }); 83 btn_2=(Button) findViewById(R.id.btn_2); 84 btn_2.setOnClickListener(new Button.OnClickListener(){ 85 86 public void onClick(View v) { 87 // TODO Auto-generated method stub 88 if(clicked){ 89 editText.setText(""); 90 clicked=false; 91 text.setLength(0); 92 } 93 text.append("8"); 94 editText.setText(text.toString()); 95 } 96 }); 97 btn_3=(Button) findViewById(R.id.btn_3); 98 btn_3.setOnClickListener(new Button.OnClickListener(){ 99 100 public void onClick(View v) { 101 // TODO Auto-generated method stub 102 if(clicked){ 103 editText.setText(""); 104 clicked=false; 105 text.setLength(0); 106 } 107 text.append("9"); 108 editText.setText(text.toString()); 109 } 110 111 }); 112 btn_4=(Button) findViewById(R.id.btn_4); 113 btn_4.setOnClickListener(new Button.OnClickListener(){ 114 115 public void onClick(View v) { 116 // TODO Auto-generated method stub 117 if(clicked){ 118 editText.setText(""); 119 clicked=false; 120 text.setLength(0); 121 } 122 text.append("4"); 123 editText.setText(text.toString()); 124 } 125 126 }); 127 btn_5=(Button) findViewById(R.id.btn_5); 128 btn_5.setOnClickListener(new Button.OnClickListener(){ 129 130 public void onClick(View v) { 131 // TODO Auto-generated method stub 132 if(clicked){ 133 editText.setText(""); 134 clicked=false; 135 text.setLength(0); 136 } 137 text.append("5"); 138 editText.setText(text.toString()); 139 } 140 141 }); 142 btn_6=(Button) findViewById(R.id.btn_6); 143 btn_6.setOnClickListener(new Button.OnClickListener(){ 144 145 public void onClick(View v) { 146 // TODO Auto-generated method stub 147 if(clicked){ 148 editText.setText(""); 149 clicked=false; 150 text.setLength(0); 151 } 152 text.append("6"); 153 editText.setText(text.toString()); 154 } 155 156 }); 157 btn_7=(Button) findViewById(R.id.btn_7); 158 btn_7.setOnClickListener(new Button.OnClickListener(){ 159 160 public void onClick(View v) { 161 // TODO Auto-generated method stub 162 if(clicked){ 163 editText.setText(""); 164 clicked=false; 165 text.setLength(0); 166 } 167 text.append("1"); 168 editText.setText(text.toString()); 169 } 170 171 }); 172 btn_8=(Button) findViewById(R.id.btn_8); 173 btn_8.setOnClickListener(new Button.OnClickListener(){ 174 175 public void onClick(View v) { 176 // TODO Auto-generated method stub 177 if(clicked){ 178 editText.setText(""); 179 clicked=false; 180 text.setLength(0); 181 } 182 text.append("2"); 183 editText.setText(text.toString()); 184 } 185 186 }); 187 btn_9=(Button) findViewById(R.id.btn_9); 188 btn_9.setOnClickListener(new Button.OnClickListener(){ 189 190 public void onClick(View v) { 191 // TODO Auto-generated method stub 192 if(clicked){ 193 editText.setText(""); 194 clicked=false; 195 text.setLength(0); 196 } 197 text.append("3"); 198 editText.setText(text.toString()); 199 } 200 201 }); 202 203 btn_0=(Button) findViewById(R.id.btn_0); 204 btn_0.setOnClickListener(new Button.OnClickListener(){ 205 206 public void onClick(View v) { 207 // TODO Auto-generated method stub 208 if(clicked){ 209 editText.setText(""); 210 clicked=false; 211 text.setLength(0); 212 } 213 text.append("0"); 214 editText.setText(text.toString()); 215 } 216 217 }); 218 219 btn_dot=(Button) findViewById(R.id.btn_dot); 220 btn_dot.setOnClickListener(new Button.OnClickListener(){ 221 222 public void onClick(View v) { 223 // TODO Auto-generated method stub 224 if(clicked){ 225 editText.setText(""); 226 clicked=false; 227 text.setLength(0); 228 } 229 if(editText.getText().toString().indexOf(".")==-1){//已經有.了 230 if(text.length()==0){ 231 text.append("0."); 232 }else{ 233 text.append("."); 234 } 235 editText.setText(text.toString()); 236 } 237 } 238 239 }); 240 241 btn_dot1=(Button) findViewById(R.id.btn_10); 242 btn_dot1.setOnClickListener(new Button.OnClickListener(){ 243 244 public void onClick(View v) { 245 // TODO Auto-generated method stub 246 if(clicked){ 247 editText.setText(""); 248 clicked=false; 249 text.setLength(0); 250 } 251 text.append("-"); 252 editText.setText(text.toString()); 253 } 254 255 }); 256 257 btn_m1=(Button) findViewById(R.id.music1); 258 btn_m1.setOnClickListener(new Button.OnClickListener(){ 259 260 public void onClick(View v) { 261 // TODO Auto-generated method stub 262 mp.start(); 263 } 264 }); 265 266 btn_m2=(Button) findViewById(R.id.music2); 267 btn_m2.setOnClickListener(new Button.OnClickListener(){ 268 269 public void onClick(View v) { 270 // TODO Auto-generated method stub 271 stop(); 272 } 273 }); 274 275 btn_m3=(Button) findViewById(R.id.music3); 276 btn_m3.setOnClickListener(new Button.OnClickListener(){ 277 278 public void onClick(View v) { 279 // TODO Auto-generated method stub 280 mp.pause(); 281 } 282 }); 283 284 btn_eq=(Button) findViewById(R.id.btn_eq); 285 btn_eq.setOnClickListener(new Button.OnClickListener(){ 286 287 public void onClick(View v) { 288 // TODO Auto-generated method stub 289 if(b==1) 290 { 291 if(editText.getText().toString().length()!=0) 292 { 293 try 294 { 295 x=Integer.parseInt(editText.getText().toString()); 296 if(x>=0 && x<=5)b++; 297 else Toast.makeText(MainActivity.this, "輸入有誤", 1).show(); 298 } 299 catch(NumberFormatException x) 300 { 301 Toast.makeText(MainActivity.this, "輸入有誤", 1).show(); 302 } 303 } 304 else Toast.makeText(MainActivity.this, "輸入有誤", 1).show(); 305 editText.setText(""); 306 number_1=""; 307 number_2=""; 308 style=0; 309 clicked=false; 310 text.setLength(0); 311 begin=System.currentTimeMillis(); 312 } 313 if(b==2) 314 { 315 if(n!=0)anser[i-2]=Float.parseFloat(editText.getText().toString()); 316 str1="第"+i+"道題目為:"; 317 n=(int)(Math.random() * 4 + 2);//隨機出運算子的數量 318 zz=(int)(Math.random()*2); 319 for(int j=0;j<n;j++) 320 { 321 //zf=(int)(Math.random()*2); 322 //if(zf==0)//負 323 // num1[j]=-(int)(Math.random()*100);//產生隨機數 324 //else //正 325 num1[j]=(int)(Math.random()*100); 326 if(zz==1)num1[j]=(int)(Math.random()*10+1); 327 } 328 for(int k=0;k<n-1;k++) 329 { 330 nov[k]=(int)(Math.random()*4); 331 if(nov[k]==3&&num1[k+1]==0) 332 { 333 do 334 { 335 num1[k+1]=(int)(Math.random()*100); 336 }while(num1[k+1]==0); 337 } 338 } 339 str=""; 340 if(zz==0) 341 { 342 for(int j=0;j<n;j++) 343 { 344 //if(num1[j]<0)str=str+"("+String.valueOf(num1[j])+")"; 345 str=str+String.valueOf(num1[j]); 346 if(j==n-1) 347 { 348 //try 349 //{ 350 //int ii=0; 351 try{ 352 trueanser[i-1]=opt.Math(str); 353 DecimalFormat df = new DecimalFormat("#.00"); 354 trueanser[i-1]=Float.parseFloat(df.format(trueanser[i-1])); 355 } catch (Exception e1) { 356 // TODO 自動生成的 catch 塊 357 e1.printStackTrace(); 358 } 359 //} 360 /*catch (Exception e1) 361 { 362 System.out.println(e1); 363 //e1.printStackTrace(); 364 }*/ 365 str=str+"="; 366 //str=str+String.valueOf(trueanser[i-1]); 367 xs.setText(str1+str); 368 break; 369 } 370 str=str+op[nov[j]]; 371 } 372 } 373 if(zz==1) 374 { 375 trueanser[i-1]=1; 376 str=String.valueOf(num1[0])+"!="; 377 for(int j=1;j<=num1[0];j++) 378 trueanser[i-1]=trueanser[i-1]*j; 379 //str=str+String.valueOf(trueanser[i-1]); 380 xs.setText(str1+str); 381 } 382 if(i==x+1) 383 { 384 b=3; 385 anser[i-2]=Float.parseFloat(editText.getText().toString()); 386 } 387 else i++; 388 editText.setText(""); 389 number_1=""; 390 number_2=""; 391 style=0; 392 clicked=false; 393 text.setLength(0); 394 } 395 if(b==3) 396 { 397 ss=""; 398 y=0; 399 for(int j=0;j<x;j++) 400 { 401 if(anser[j]==trueanser[j])y++; 402 ss=ss+(j+1)+":"+trueanser[j]+";\n"; 403 } 404 end=System.currentTimeMillis(); 405 time=(end-begin)/1000; 406 xs.setText("答題完成!答對"+y+"道!\n"+"用時:"+time+"s 正確答案:"); 407 editText.setSingleLine(false); 408 editText.setHorizontallyScrolling(false); 409 editText.setText(ss); 410 411 b=0; 412 number_1=""; 413 number_2=""; 414 style=0; 415 clicked=false; 416 text.setLength(0); 417 } 418 } 419 }); 420 start=(Button) findViewById(R.id.start); 421 start.setOnClickListener(new Button.OnClickListener(){ 422 423 public void onClick(View v) { 424 // TODO Auto-generated method stub 425 xs.setText("請輸入出題數量!(1-5)"); 426 n=0; 427 i=1; 428 b=1; 429 } 430 }); 431 btn_clear=(Button) findViewById(R.id.btn_clear); 432 btn_clear.setOnClickListener(new Button.OnClickListener(){ 433 434 public void onClick(View v) { 435 // TODO Auto-generated method stub 436 editText.setText(""); 437 number_1=""; 438 number_2=""; 439 style=0; 440 clicked=false; 441 text.setLength(0); 442 } 443 }); 444 } 445 }
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 android:background="@drawable/a1" 6 > 7 8 <TextView 9 android:id="@+id/xs1" 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 13 android:singleLine="true" 14 android:ellipsize="marquee" 15 android:focusable="true" 16 android:focusableInTouchMode="true" 17 18 android:text="歡迎使用四則運算程式 ! ! !" 19 android:textColor="#ffd700" 20 android:textSize="28sp" > 21 22 <requestFocus /> 23 </TextView> 24 25 <EditText 26 android:hint="此處顯示題目" 27 android:id="@+id/xs" 28 android:layout_width="wrap_content" 29 android:layout_height="wrap_content" 30 android:ems="20" 31 android:focusable="false" 32 33 > 34 35 <requestFocus /> 36 </EditText> 37 38 39 40 41 <EditText 42 android:id="@+id/result" 43 android:layout_width="match_parent" 44 android:layout_height="wrap_content" 45 android:cursorVisible="false" 46 android:digits="1234567890." 47 android:ems="20" 48 android:focusable="false" 49 android:numeric="decimal" 50 android:singleLine="true" /> 51 52 <TableLayout 53 android:layout_width="fill_parent" 54 android:layout_height="wrap_content" 55 android:stretchColumns="0,1,2,3" > 56 57 <TableRow> 58 59 <Button 60 android:id="@+id/btn_1" 61 android:text="7" /> 62 63 <Button 64 android:id="@+id/btn_2" 65 android:text="8" /> 66 67 <Button 68 android:id="@+id/btn_3" 69 android:text="9" /> 70 </TableRow> 71 72 <TableRow> 73 74 <Button 75 android:id="@+id/btn_4" 76 android:text="4" /> 77 78 <Button 79 android:id="@+id/btn_5" 80 android:text="5" /> 81 82 <Button 83 android:id="@+id/btn_6" 84 android:text="6" /> 85 </TableRow> 86 87 <TableRow> 88 89 <Button 90 android:id="@+id/btn_7" 91 android:text="1" /> 92 93 <Button 94 android:id="@+id/btn_8" 95 android:text="2" /> 96 97 <Button 98 android:id="@+id/btn_9" 99 android:text="3" /> 100 </TableRow> 101 102 <TableRow> 103 104 <Button 105 android:id="@+id/btn_dot" 106 android:text="." /> 107 108 <Button 109 android:id="@+id/btn_0" 110 android:text="0" /> 111 112 <Button 113 android:id="@+id/btn_10" 114 android:text="-" /> 115 </TableRow> 116 </TableLayout> 117 118 <TableLayout 119 android:layout_width="match_parent" 120 android:layout_height="wrap_content" > 121 122 <TableRow 123 android:id="@+id/tableRow1" 124 android:layout_width="wrap_content" 125 android:layout_height="wrap_content" > 126 127 <Button 128 android:id="@+id/start" 129 android:layout_width="105.0dip" 130 android:layout_height="50.0dip" 131 android:text="開始" /> 132 133 <Button 134 android:id="@+id/btn_eq" 135 android:layout_width="105.0dip" 136 android:layout_height="50.0dip" 137 android:text="確定" /> 138 139 <Button 140 android:id="@+id/btn_clear" 141 android:layout_width="105.0dip" 142 android:layout_height="50.0dip" 143 android:text="清除" /> 144 145 </TableRow> 146 147 <TableRow 148 android:id="@+id/tableRow2" 149 android:layout_width="wrap_content" 150 android:layout_height="wrap_content" > 151 152 <TextView 153 android:id="@+id/textView1" 154 android:layout_width="wrap_content" 155 android:layout_height="wrap_content" 156 android:text="" /> 157 158 </TableRow> 159 160 <TableRow 161 android:id="@+id/tableRow3" 162 android:layout_width="wrap_content" 163 android:layout_height="wrap_content" > 164 165 <TextView 166 android:id="@+id/textView2" 167 android:layout_width="wrap_content" 168 android:layout_height="wrap_content" 169 android:text="" /> 170 171 </TableRow> 172 173 <TableRow 174 android:id="@+id/tableRow4" 175 android:layout_width="wrap_content" 176 android:layout_height="wrap_content" > 177 178 <Button 179 android:id="@+id/music1" 180 android:layout_width="wrap_content" 181 android:layout_height="wrap_content" 182 android:text="播放" /> 183 184 <Button 185 android:id="@+id/music3" 186 android:layout_width="wrap_content" 187 android:layout_height="wrap_content" 188 android:text="暫停" /> 189 190 <Button 191 android:id="@+id/music2" 192 android:layout_width="wrap_content" 193 android:layout_height="wrap_content" 194 android:text="停止" /> 195 196 </TableRow> 197 </TableLayout> 198 199 200 </LinearLayout>
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 }
音樂檔案就不發啦,只要自行丟一個MP3檔案到res/raw裡,改名為unity或者到程式碼裡更改檔名都可
PS:送上背景圖片~