用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):致命异常:main05-13 23:40:55.046:E/AndroidRuntime(27281):进程:aectann.dcsmp,PID:2728105-13 23:40:55.046:E/AndroidRuntime(27281):java.lang.IndexOutOfBoundsException:charAt:4>=长度405-13 23:40:55.046:E/AndroidRuntime(27281):在android.text.SpannableStringBuilder.charAt(SpannableStringBuilder.java:121)05-13 23:40:55.046:E/AndroidRuntime(27281):在aectan.dcsmp.Zhegalkin_polynomial.zheg(Zhegalkin.polynomial.java:230)05-13 23:40:55.046:E/AndroidRuntime(27281):在aectan.dcsmp.Zhegalkin_polynomial$1.onClick(Zhegalkin.polynomial.java:122)05-13 23:40:55.046:E/AndroidRuntime(27281):在android.view.view.performClick(view.java:4811)05-13 23:40:55.046:E/AndroidRuntime(27281):在android.view.view$PerformClick.run(view.java:20136)05-13 23:40:55.046:E/AndroidRuntime(27281):在android.os.Handler.handleCallback(Handler.java:815)05-13 23:40:55.046:E/AndroidRuntime(27281):在android.os.Handler.dispatchMessage(Handler.java:104)05-13 23:40:55.046:E/AndroidRuntime(27281):在android.os.Looper.loop(Looper.java:194)05-13 23:40:55.046:E/AndroidRuntime(27281):在android.app.ActivityThread.main(ActivityThreads.java:5549)05-13 23:40:55.046:E/AndroidRuntime(27281):在java.lang.reflect.Method.ioke(Native Method)05-13 23:40:55.046:E/AndroidRuntime(27281):在java.lang.reflect.Method.ioke(Method.java:372)05-13 23:40:55.046:E/AndroidRuntime(27281):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)05-13 23:40:55.046:E/AndroidRuntime(27281):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)

121-函数调用;

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

也许这可能是该异常的解决方案:

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)));
            }
        }

希望它能帮助

最新更新