0

EditText の値を取得して配列に格納するにはどうすればよいですか?

これは私の完全なコードです:

EditText op = (EditText)v.findViewById(R.id.operator);
array=new int [Integer.valueOf(op.getText().toString())];

for (i = 0;i<(array.length+1);i++){
    LayoutInflater inflater = MainActivity.this.getLayoutInflater();
    final View v2=inflater.inflate(R.layout.inputangka, null) ;
    new AlertDialog.Builder(MainActivity.this)
        .setIcon(R.drawable.ic_launcher)
        .setTitle("number of-"+(i-1)+":")
        .setView(v2)
        .setNeutralButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dlg, int sumthin) {
                EditText number = (EditText)v2.findViewById(R.id.number);
                int number1 = Integer.valueOf(number.getText().toString());
                array [i]= number1; //error line

私のエラーログ:

02-05 16:33:31.374: E/AndroidRuntime(431): java.lang.ArrayIndexOutOfBoundsException

これを解決するにはどうすればよいですか?

4

4 に答える 4

1

これは、ex の場合、編集テキストに 5 を入力したために発生します。これで、初期値 0 から 6 未満になるまでループを繰り返します。

カウンターが 5 に達すると、条件は true 5 < 6 になりますが、ここでは配列サイズが 5 で、6 番目の要素にアクセスしています。だからそれを投げますArrayIindexOutOfBound Exception

この問題から抜け出すには.

これを試して。

for (i = 0; i<(array.length);i++){
    //Code
}
于 2013-02-05T17:06:07.700 に答える
0

から+1を削除する for (i = 0;i<(array.length+1);i++){と、チャームのように機能します。

于 2013-02-05T17:15:07.377 に答える
0

ループのonClick()実行が終了した後に実行されるため、 の値はi配列の最後のインデックスよりも 1 大きくなります。回避策として、その値を別の一時整数変数に保存してから送信します。その時はきっとうまくいく。

于 2013-02-05T17:48:24.377 に答える
0

for 条件を次のコードに置き換えるだけです。

for (i = 0;i<(array.length-1);i++){

それは確かに機能します。

于 2013-02-05T17:28:24.090 に答える