Alexander Vasilchuk
Alexander Vasilchuk

Reputation: 155

Filling two-dimensional array by values from EditText

I have EditText and array. I want fill array by values from EditText field. All the characters are digits. How can I achieve this? I've try this:

...
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];
...

What i am getting in the 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 - function call;

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

Upvotes: 0

Views: 154

Answers (1)

OscarBcn
OscarBcn

Reputation: 626

maybe this could be a solution for that Exception:

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

and if you want to create only space needed by those chars, maybe you will need to use something like this (but I think this will need to change how are you accessing the data):

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

hope it helps

Upvotes: 1

Related Questions