2013-02-05 83 views
0

如何获取EditText的值然后将其存储在我的数组中?如何在edittext中将文本转换为数组

这是我的全码:

EditText op = (EditText)v.findViewById(R.id.operator); 
array=new int [Integer.valueOf(op.getText().toString())]; 

for (i = 0;i<(array.length+1);i++){ 
    LayoutInflater inflater = MainActivity.this.getLayoutInflater(); 
    final View v2=inflater.inflate(R.layout.inputangka, null) ; 
    new AlertDialog.Builder(MainActivity.this) 
     .setIcon(R.drawable.ic_launcher) 
     .setTitle("number of-"+(i-1)+":") 
     .setView(v2) 
     .setNeutralButton("Ok", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dlg, int sumthin) { 
       EditText number = (EditText)v2.findViewById(R.id.number); 
       int number1 = Integer.valueOf(number.getText().toString()); 
       array [i]= number1; //error line 

我的错误日志:

02-05 16:33:31.374: E/AndroidRuntime(431): java.lang.ArrayIndexOutOfBoundsException 

如何解决这个问题?

+4

'for(i = 0; i <(array.length + 1); i ++)' - 看起来好像是你的问题。 +1使您超出数组中的最后一个索引。 – eldarerathis

+0

我已删除+1,我再次编译,但我的错误相同,,,,数组[i] = number1; – Ash

回答

1

发生这种情况是因为前者在编辑文本中输入5。现在你迭代循环,直到从初始值0小于6。

当计数器达到5时,你的条件将成为真5 < 6然后,但在那里你的数组大小是5,在这里你正在访问的第6个元素。所以它扔了ArrayIindexOutOfBound Exception

摆脱这个问题。

试试这个。

for (i = 0; i<(array.length);i++){ 
    //Code 
} 
+0

第二个实际上不会导致异常。它只是将标题设置为“-1”的数字,“',”“-0的数字:”,等等。 – Eric

+0

@Eric我得到了我没有看到.. –

+0

我已经删除,那么我的问题是一样的,,,,, – Ash

0

for (i = 0;i<(array.length+1);i++){删除+1,它会像一个魅力。

+0

同样的错误,这是我的错误logcat和我的完整代码https://docs.google。com/document/d/1C_dar_55SyqBbT2RMpwx11KH210UKxK5rzqTwNaKGvg /编辑 – Ash

+0

是的,对不起,我是新手,请给我代码循环对话框,,, – Ash

+0

我会给它,但是什么是逻辑,我的意思是你想要做什么? – AAnkit

0

您只需要通过以下代码替换for条件。

for (i = 0;i<(array.length-1);i++){ 

它会工作肯定。

0

看到,您的onClick()在您的循环完成执行后得到执行,因此i的值比数组最后一个索引多一个。对于解决方法,将该值保存到另一个临时整数变量中,然后发送它。那肯定会工作。

相关问题