2016-05-13 21 views
0

我有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

是的,它有幫助,一切正常 –