<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>
沒有留言:
張貼留言