2012年4月15日 星期日

[Android]Common Factors 列出兩個正整數的所有公因數



<CommonFactors.java>
   1: package com.android.commonfactors;
   2:  
   3: import java.util.ArrayList;
   4:  
   5: import android.app.Activity;
   6: import android.content.Context;
   7: import android.os.Bundle;
   8: import android.view.View;
   9: import android.view.View.OnClickListener;
  10: import android.view.inputmethod.InputMethodManager;
  11: import android.widget.ArrayAdapter;
  12: import android.widget.Button;
  13: import android.widget.EditText;
  14: import android.widget.ListAdapter;
  15: import android.widget.ListView;
  16: import android.widget.TextView;
  17:  
  18: public class CommonFactors extends Activity {
  19:     
  20:     private int No1, No2;
  21:     private TextView textviewCnt;
  22:     private EditText edittextNo1, edittextNo2;
  23:     private Button btnRun, btnExit;
  24:     private ListView listviewResult;
  25:     private ListAdapter laSimple1;
  26:     private ArrayList<Integer> listItems = new ArrayList<Integer>();
  27:     
  28:     @Override
  29:     public void onCreate(Bundle savedInstanceState) {
  30:         super.onCreate(savedInstanceState);
  31:         setContentView(R.layout.main);
  32:         findViews();
  33:         setButtonListeners();
  34:     }
  35:     
  36:     private void findViews(){
  37:         edittextNo1 = (EditText) findViewById(R.id.no1EditText);
  38:         edittextNo2 = (EditText) findViewById(R.id.no2EditText);
  39:         btnRun = (Button) findViewById(R.id.runBtn);
  40:         btnExit = (Button) findViewById(R.id.exitBtn);
  41:         textviewCnt = (TextView) findViewById(R.id.cntTextView);
  42:         listviewResult = (ListView)  findViewById(R.id.resultListView);
  43:     }    
  44:     
  45:     private void setButtonListeners(){
  46:         btnRun.setOnClickListener(new View.OnClickListener() {
  47:             public void onClick(View v) {
  48:                 findCommonFactors();
  49:                 showResults();
  50:                 hideSoftKeyboard();
  51:             }
  52:          });
  53:   
  54:         btnExit.setOnClickListener(new OnClickListener(){
  55:             public void onClick(View v) {
  56:                 android.os.Process.killProcess(android.os.Process.myPid());
  57:             }
  58:         });
  59:     }
  60:     
  61:     private void findCommonFactors() {
  62:         int i;
  63:         No1 = Integer.valueOf(edittextNo1.getText().toString());
  64:         No2 = Integer.valueOf(edittextNo2.getText().toString());
  65:         // 列出 No1 的所有因數
  66:         listItems.clear();
  67:         i = 1;
  68:         while (i <= No1)
  69:         {
  70:             if ( No1 % i == 0 )
  71:                 listItems.add(i);
  72:             i++;
  73:         }
  74:         // 列出 No1 與 No2 的所有公因數
  75:         i = listItems.size() -1;
  76:         while (i >=0 )
  77:         {
  78:             if ( No2 % listItems.get(i) != 0 )
  79:             {
  80:                 listItems.remove(listItems.get(i));
  81:             }
  82:             i--;
  83:         }       
  84:     }
  85:     
  86:     private void showResults(){
  87:         // 顯示 listItems 的所有資料
  88:         laSimple1 = new ArrayAdapter<Integer>(    this,
  89:                                                 R.layout.my_list_row,
  90:                                                 listItems);
  91:         listviewResult.setAdapter(laSimple1);
  92:         textviewCnt.setText("\n公因數共:"+listItems.size()+"個\n");
  93:     }
  94:     
  95:     private void hideSoftKeyboard(){
  96:  
  97:         InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  98:  
  99:         imm.hideSoftInputFromWindow(getWindow().peekDecorView().getWindowToken(), 0);
 100:  
 101:     }
 102:     
 103: }

<main.xml>
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   3:     android:layout_width="fill_parent"
   4:     android:layout_height="fill_parent"
   5:     android:orientation="vertical" >
   6:  
   7:     <TextView
   8:         android:layout_width="fill_parent"
   9:         android:layout_height="wrap_content"
  10:         android:gravity="center"
  11:         android:text="@string/strTitle"
  12:         android:textSize="18dp" />
  13:  
  14:     <LinearLayout
  15:         android:id="@+id/linearLayout1"
  16:         android:layout_width="match_parent"
  17:         android:layout_height="match_parent" >
  18:  
  19:         <LinearLayout
  20:             android:id="@+id/linearLayout2"
  21:             android:layout_width="wrap_content"
  22:             android:layout_height="match_parent"
  23:             android:orientation="vertical" >
  24:  
  25:             <EditText
  26:                 android:id="@+id/no1EditText"
  27:                 android:layout_width="wrap_content"
  28:                 android:layout_height="wrap_content"
  29:                 android:hint="@string/strNo1Hint"
  30:                 android:inputType="number" >
  31:  
  32:                 <requestFocus />
  33:             </EditText>
  34:  
  35:            <EditText
  36:                 android:id="@+id/no2EditText"
  37:                 android:layout_width="wrap_content"
  38:                 android:layout_height="wrap_content"
  39:                 android:hint="@string/strNo2Hint"
  40:                 android:inputType="number" />
  41:  
  42:             <LinearLayout
  43:                 android:id="@+id/linearLayout3"
  44:                 android:layout_width="match_parent"
  45:                 android:layout_height="wrap_content" >
  46:  
  47:                 <Button
  48:                     android:id="@+id/runBtn"
  49:                     android:layout_width="wrap_content"
  50:                     android:layout_height="wrap_content"
  51:                     android:text="@string/strRun" />
  52:  
  53:                 <Button
  54:                     android:id="@+id/exitBtn"
  55:                     android:layout_width="wrap_content"
  56:                     android:layout_height="wrap_content"
  57:                     android:text="@string/strExit" />
  58:  
  59:             </LinearLayout>
  60:  
  61:             <TextView
  62:                 android:id="@+id/cntTextView"
  63:                 android:layout_width="wrap_content"
  64:                 android:layout_height="wrap_content"
  65:                 android:text="@string/strCnt" />
  66:  
  67:             <TextView
  68:                 android:id="@+id/textView1"
  69:                 android:layout_width="wrap_content"
  70:                 android:layout_height="wrap_content"
  71:                 android:text="@string/strCopyright" />
  72:  
  73:         </LinearLayout>
  74:  
  75:          <LinearLayout
  76:             android:id="@+id/linearLayout4"
  77:             android:layout_width="match_parent"
  78:             android:layout_height="match_parent"
  79:             android:layout_marginLeft="15dp"
  80:             android:orientation="vertical" >
  81:  
  82:             <ListView
  83:                 android:id="@+id/resultListView"
  84:                 android:layout_width="wrap_content"
  85:                 android:layout_height="wrap_content" >
  86:  
  87:             </ListView>
  88:  
  89:         </LinearLayout>
  90:  
  91:     </LinearLayout>
  92:  
  93: </LinearLayout>

<my_list_row.xml>
   1: <?xml version="1.0" encoding="utf-8"?>
   2:  
   3: <TextView xmlns:android="http://schemas.android.com/apk/res/android"
   4:     android:layout_width="match_parent"
   5:     android:layout_height="match_parent" >
   6:  
   7: </TextView>

<strings.xml>
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <resources>
   3:  
   4:     <string name="hello">Hello World, CommonFactors!</string>
   5:     <string name="strTitle">【公因數 Common Factors】\n</string><string name="app_name">公因數</string>
   6:     <string name="strNo1Hint">請輸入第一個正整數</string>
   7:     <string name="strNo2Hint">請輸入第二個正整數</string>
   8:     <string name="strRun">執行</string>
   9:     <string name="strExit">離開</string>
  10:     <string name="strCnt">\n公因數有:0個\n</string>
  11:     <string name="strCopyright">Copyright : Terry Wu</string>
  12:  
  13: </resources>

沒有留言:

張貼留言