【问题标题】:Filling two-dimensional array by values from EditText用 EditText 中的值填充二维数组
【发布时间】:2016-05-14 07:11:36
【问题描述】:

我有 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):致命异常:主要 05-13 23:40:55.046: E/AndroidRuntime(27281): 进程: 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): 在 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): 在 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(ActivityThread.java:5549) 05-13 23:40:55.046: E/AndroidRuntime(27281): 在 java.lang.reflect.Method.invoke(Native Method) 05-13 23:40:55.046: E/AndroidRuntime(27281): 在 java.lang.reflect.Method.invoke(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)));

【问题讨论】:

  • 错误发生时您输入了多少位数?

标签: java android arrays android-edittext


【解决方案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)));
            }
        }

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2021-04-14
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多