下面我用畫面並配合程式來說明 :
下圖中, 我配置了兩個 EditText 與 一個 [開始] 按鈕, "+" 與 "=" 兩個符號都是 TextView, 包括顯示相加後的答案欄也是 TextView 元件. 而兩個 EditText 元件的 numeric 屬性皆設定為 integer, 讓它只能接受數字的輸入, 按下 [開始] 鈕後, 我們希望得到兩數相加後的答案 .
直接來看核心程式的部份: (紅色字體部份)
public class StrAndInt extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText editText1 = (EditText)findViewById(R.id.editText1);
final EditText editText2 = (EditText)findViewById(R.id.editText2);
final Button button1 = (Button)findViewById(R.id.button1);
final TextView textView2 = (TextView)findViewById(R.id.textView2);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText(
editText1.getText().toString() +
editText2.getText().toString()
);
}});
}
}
上面紅色部份的程式說明 :
我將兩個 EditText 的內容進行相加, 運算的結果再呈現到 textView2 中. 下圖中 23 + 12 竟然不是 35 ? 因為資料被當成字串來處理的緣故, 所以23 + 12 = 2312, 但 ~這不是我們要的結果 !
不對! 這結果不是我們要的 ~ |
int a = Integer.parseInt(editText1.getText().toString());
int b = Integer.parseInt(editText2.getText().toString());
這次設定了兩個 int 變數 a、b 來存放兩個經過數值轉換的 EditText 內容, 接著在 textView2 的 setText() 中直接帶入 a + b .... 看看能否成功 ~
這次出了個大錯誤 ! (如下圖) 帶入 textView2.setText() 的資料必須是 String 型態的資料, 數值型態是無法接受的 ~ 更不用說要在裡面進行兩數相加了 !
錯誤警告! 錯誤原因並不會在此呈現出來 |
再接再厲 ! 再把核心碼改成如下 :
int a = Integer.parseInt(editText1.getText().toString());
int b = Integer.parseInt(editText2.getText().toString());
textView2.setText(String.valueOf(a+b));
54 + 13 = 67 終於對了 ! 把兩個輸入的資料轉換成數值型態後, 運算完的結果 (a + b) 還必須再轉換成 String 型態, 才能符合 textView2.setText() 的需求. 轉換來轉換去真是有些累人 ~
終於對了 ! |
數值與字串 (String) 型態互相轉換, 要多活用這兩個內建函式 :
( 輸入 int 傳回 String ) : String.valueOf( int )
( 輸入 String 傳回 int ) : Integer.parseInt( String )
我想請問一下,如果是以資料庫內的數字該怎麼完成相加?
回覆刪除(假設您使用的是 Android 支援的 SQLite)
刪除需先知道資料表中要進行相加的 "欄位" 其型別為何
若欄位並非 "數值型態" 則必須先進行轉型 再做相加運算 (如文中所述)
如果 ... 您要問的的是 SQLite 的指令相關操作 ...
只能向您說聲抱歉 請加油 !