2016-05-13 4 views
0

からの値によって2次元アレイを充填私のEditTextと配列を有しています。 EditTextフィールドの値で配列を塗りたい。 すべての文字は数字です。どうすればこれを達成できますか? 私はこれを試してみました:のEditText

... 
int [][] a = new int [100][100]; 
n=1;//now 1, but this value entered in EditText 
... 
        if (edit_1.getText().length() > 0) { 
         for (int ii = 0; ii < a.length; ii++) { 
          a[ii][n+1] = Integer.parseInt(String.valueOf(edit_1.getText().charAt(ii))); 
         } 
        } 
... 
a[1][n+2]=a[1][n+1]; 
... 

私はLogCatに取得しています何:

 
05-13 23:40:55.046: E/AndroidRuntime(27281): FATAL EXCEPTION: main 
05-13 23:40:55.046: E/AndroidRuntime(27281): Process: aectann.dcsmp, PID: 27281 
05-13 23:40:55.046: E/AndroidRuntime(27281): java.lang.IndexOutOfBoundsException: charAt: 4 >= length 4 
05-13 23:40:55.046: E/AndroidRuntime(27281): at android.text.SpannableStringBuilder.charAt(SpannableStringBuilder.java:121) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at aectann.dcsmp.Zhegalkin_polynomial.zheg(Zhegalkin_polynomial.java:230) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at aectann.dcsmp.Zhegalkin_polynomial$1.onClick(Zhegalkin_polynomial.java:122) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at android.view.View.performClick(View.java:4811) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at android.view.View$PerformClick.run(View.java:20136) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at android.os.Handler.handleCallback(Handler.java:815) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at android.os.Handler.dispatchMessage(Handler.java:104) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at android.os.Looper.loop(Looper.java:194) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at android.app.ActivityThread.main(ActivityThread.java:5549) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at java.lang.reflect.Method.invoke(Native Method) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at java.lang.reflect.Method.invoke(Method.java:372) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964) 
05-13 23:40:55.046: E/AndroidRuntime(27281): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759) 

121 - 関数呼び出し。

230からa[ii][n+1] = Integer.parseInt(String.valueOf(edit_1.getText().charAt(ii)));

+0

エラーが発生したときに何桁の数字を入力しましたか? – Omar

答えて

1

多分これは、その例外のための解決策が考えられます。

if (edit_1.getText().length() > 0) { 
    for (int ii = 0; ii < edit_1.getText().length(); ii++) { 
      a[ii][n + 1] = Integer.parseInt(String.valueOf(edit_1.getText().charAt(ii))); 
     } 
} 

、あなたはそれらの文字が必要とするだけのスペースを作成したい場合は、多分あなたは、このようなものを使用する必要があります。 (しかし、私は、これはどのようにデータにアクセスしている変更する必要があるだろうと思い):

int [][] a = new int [100][]; 
n=1;//now 1, but this value entered in EditText 
...  
     if (edit_1.getText().length() > 0) { 
      a[n+1] = new int[edit_1.getText().length()]; 
      for (int ii = 0; ii < a.length; ii++) { 
       a[n+1][ii] = Integer.parseInt(String.valueOf(edit_1.getText().charAt(ii))); 
      } 
     } 

はそれが

を役に立てば幸い
+0

はい、役立ちます、すべてが機能しています –