首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 從 EditText 獲取整數並作為數組索引取值

     編輯:程式設計綜合問答

原代碼關鍵錯誤


// 錯誤 1: R.id.editText1 是資源 ID (int),非用戶輸入文本
final String str = String.valueOf(R.id.editText1); 
// 錯誤 2: 未獲取 EditText 實例調用 getText()
// 錯誤 3: setText(int) 會被識別為資源 ID,需轉字符串
ET2.setText(z); 

正確實現步驟

  1. 通過 findViewById 獲取 EditText 實例。
  2. 調用 getText().toString() 獲取用戶輸入字符串。
  3. Integer.parseInt() 或 Integer.valueOf() 轉為索引。
  4. 數組越界檢查。
  5. setText(String.valueOf(value)) 設置結果文本。

完整修正代碼


public class MainActivity extends AppCompatActivity {
    private EditText etIndex, etResult;
    private Button btnCalc;
    private final int[] oil = {20, 30, 40, 50, 60, 70, 80, 90, 100};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        etIndex = findViewById(R.id.editText1);
        etResult = findViewById(R.id.editText2);
        btnCalc = findViewById(R.id.button1);
        
        btnCalc.setOnClickListener(v -> {
            String input = etIndex.getText().toString().trim();
            if (input.isEmpty()) {
                Toast.makeText(this, "請輸入索引", Toast.LENGTH_SHORT).show();
                return;
            }
            try {
                int index = Integer.parseInt(input);
                if (index < 0 || index >= oil.length) {
                    Toast.makeText(this, "索引超出範圍 0-" + (oil.length-1), Toast.LENGTH_SHORT).show();
                    return;
                }
                int value = oil[index];
                etResult.setText(String.valueOf(value)); // 必須轉字符串
            } catch (NumberFormatException e) {
                Toast.makeText(this, "請輸入有效整數", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

關鍵點速查表

錯誤寫法正確寫法說明
String.valueOf(R.id.editText1)editText.getText().toString()資源 ID ≠ 用戶輸入
et.setText(intValue)et.setText(String.valueOf(intValue))int 版本視為資源 ID
無越界檢查if (index < 0 || index >= arr.length)防止 ArrayIndexOutOfBoundsException
無格式異常捕獲try-catch NumberFormatException用戶輸入非數字時不崩潰

XML 佈局建議




  • 輸入框設置 inputType="number" 彈出數字鍵盤。
  • 結果框設置 focusable="false" 禁止編輯,或用 TextView 更合適。

總結

核心修正:**獲取 EditText 實例 → 讀取文本 → 解析整數 → 越界檢查 → 設置字符串結果**。養成防禦性編程習慣:輸入驗證、異常捕獲、邊界檢查、類型轉換正確。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved