2012年4月12日 星期四

[Android]PrimeNumbers 列出兩個整數間所有的質數






程式說明:
1. 輸入兩個整數值
2. 列出兩個整數值範圍內所有的質數於 ListView 中




<PrimeNumbers.java>

   1: package com.android.primenumbers;
   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 PrimeNumbers extends Activity {
  19:     
  20:     private int startNo, endNo;
  21:     private TextView textviewCnt;
  22:     private EditText edittextStartNo, edittextEndNo;
  23:     private Button btnRun, btnExit;
  24:     private ListView listviewResult;
  25:     private ListAdapter laSimple1;
  26:     private ArrayList<Integer> listItems = new ArrayList<Integer>();
  27:     /** Called when the activity is first created. */
  28:     @Override
  29:     public void onCreate(Bundle savedInstanceState) {
  30:         super.onCreate(savedInstanceState);
  31:         setContentView(R.layout.main);
  32:         findViews();
  33:         setListeners();
  34:     }
  35:     
  36:     private void findViews(){
  37:         edittextStartNo = (EditText) findViewById(R.id.startnoEditText);
  38:         edittextEndNo = (EditText) findViewById(R.id.endnoEditText);
  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 setListeners(){
  46:         btnRun.setOnClickListener(new View.OnClickListener() {
  47:             public void onClick(View v) {
  48:                 findPrimeNumbers();
  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 findPrimeNumbers() {
  62:         int i, j;
  63:         boolean flag;
  64:         startNo = Integer.valueOf(edittextStartNo.getText().toString());
  65:         endNo = Integer.valueOf(edittextEndNo.getText().toString());
  66:         listItems.clear();
  67:         for (i = startNo; i <= endNo ; i++) {
  68:             flag = true;
  69:             for (j = 2; j < i ; j++) {
  70:                 if ( ( i % j ) == 0 ) {
  71:                     flag = false;
  72:                     break;
  73:                 }
  74:             }
  75:             if (flag) {
  76:                 listItems.add(i);
  77:             }
  78:         }
  79:     }
  80:     
  81:     private void showResults(){
  82:         laSimple1 = new ArrayAdapter<Integer>(    this,
  83:                                                 R.layout.my_list_row,
  84:                                                 listItems);
  85:         listviewResult.setAdapter(laSimple1);
  86:         textviewCnt.setText("質數共:"+listItems.size()+"個");
  87:     }
  88:     
  89:     private void hideSoftKeyboard(){
  90:  
  91:         InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  92:  
  93:         imm.hideSoftInputFromWindow(getWindow().peekDecorView().getWindowToken(), 0);
  94:  
  95:     }
  96: }


<main.xml>

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   3:     android:id="@+id/LinearLayout1"
   4:     android:layout_width="fill_parent"
   5:     android:layout_height="fill_parent"
   6:     android:gravity="center"
   7:     android:orientation="vertical" >
   8:  
   9:     <TextView
  10:         android:id="@+id/textView2"
  11:         android:layout_width="match_parent"
  12:         android:layout_height="wrap_content"
  13:         android:gravity="center"
  14:         android:text="@string/strTitle"
  15:         android:textAppearance="?android:attr/textAppearanceMedium" />
  16:  
  17:     <LinearLayout
  18:         android:id="@+id/linearLayout1"
  19:         android:layout_width="match_parent"
  20:         android:layout_height="match_parent" >
  21:  
  22:         <LinearLayout
  23:             android:id="@+id/linearLayout3"
  24:             android:layout_width="wrap_content"
  25:             android:layout_height="wrap_content"
  26:             android:orientation="vertical" >
  27:  
  28:             <EditText
  29:                 android:id="@+id/startnoEditText"
  30:                 android:layout_width="wrap_content"
  31:                 android:layout_height="wrap_content"
  32:                 android:hint="@string/strInput1"
  33:                 android:inputType="number" />
  34:  
  35:             <EditText
  36:                 android:id="@+id/endnoEditText"
  37:                 android:layout_width="wrap_content"
  38:                 android:layout_height="wrap_content"
  39:                 android:hint="@string/strInput2"
  40:                 android:inputType="number" />
  41:  
  42:             <LinearLayout
  43:                 android:id="@+id/linearLayout4"
  44:                 android:layout_width="wrap_content"
  45:                 android:layout_height="match_parent" >
  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:             </LinearLayout>
  59:  
  60:             <TextView
  61:                 android:id="@+id/cntTextView"
  62:                 android:layout_width="wrap_content"
  63:                 android:layout_height="wrap_content"
  64:                 android:layout_marginTop="23dp"
  65:                 android:text="@string/strResult"
  66:                 android:textSize="16dp" />
  67:  
  68:             <TextView
  69:                 android:id="@+id/textView1"
  70:                 android:layout_width="wrap_content"
  71:                 android:layout_height="wrap_content"
  72:                 android:text="@string/strCopyright" />
  73:         </LinearLayout>
  74:  
  75:         <LinearLayout
  76:             android:id="@+id/linearLayout5"
  77:             android:layout_width="wrap_content"
  78:             android:layout_height="wrap_content"
  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:             </ListView>
  87:         </LinearLayout>
  88:  
  89:     </LinearLayout>
  90:  
  91: </LinearLayout>


<my_list_row.xml>

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


<strings.xml>

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <resources>
   3:  
   4:     <string name="hello">Hello World, PrimeNumbers!</string>
   5:     <string name="app_name">質數</string>
   6:     <string name="strInput1">請輸入範圍起始值</string>
   7:     <string name="strInput2">請輸入範圍終止值</string>
   8:     <string name="strRun">執行</string>
   9:     <string name="strExit">離開</string>
  10:     <string name="strResult">質數共:0個\n</string>
  11:     <string name="strTitle">【質數 Prime Numbers】\n</string>
  12:     <string name="strCopyright">Copyright : Terry Wu</string>
  13:  
  14: </resources>

沒有留言:

張貼留言