需要在数组中存储值

时间:2015-12-08 06:03:06

标签: java arrays string arraylist split

如果条件不匹配,我需要在数组中存储一个值,否则它应该在相对于空格分割字符串后取值。我的代码片段如下:

ArrayList<String> InOutsNum = new ArrayList<String>();
ArrayList<String> InOutsFinal = new ArrayList<String>();
String[] strTemp = new String[2];
String temp = "[3:0] data1";
strTemp = temp.split(" ");
if(strTemp[1].isEmpty()) {      // TODO
  strTemp[1] = strTemp[0];
  strTemp[0] = "1";
}
InOutsNum.add(strTemp[0]);
InOutsFinal.add(strTemp[1]);

请帮忙!

输出:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1

5 个答案:

答案 0 :(得分:3)

如果使用split,则无需先指示数组大小。

你可以这样做:

String[] tokens = temp.split(" ");

答案 1 :(得分:0)

这对我有用:

ArrayList<String> InOutsNum = new ArrayList<String>();
    ArrayList<String> InOutsFinal = new ArrayList<String>();
    String[] strTemp; //no need to declare because *
    String temp = "[3:0] data1";//*here you set the array
    strTemp = temp.split(" ");
    if(strTemp[1].isEmpty()) {      // TODO
        strTemp[1] = strTemp[0];
        strTemp[0] = "1";
    }
    InOutsNum.add(strTemp[0]);   //Contains "[3:0]"
    InOutsFinal.add(strTemp[1]); //Contains "data1"

答案 2 :(得分:0)

首先检查数组的长度,以确定是否可以访问字段。

使用以下代码:

if(strTemp.length>=2 && strTemp[1].isEmpty()) {

另外根据建议,如果要在临时数组中存储split(&#34;&#34;)方法的值,则不需要先将其初始化。

答案 3 :(得分:0)

将代码更改为使用两个数组,例如:

String[] strTemp = new String[2];
String temp = "[3:0] data1";
String[] splitted = temp.split(" ");
if(splitted.length  == 1) {      // TODO
  strTemp[1] = splitted[0];
  strTemp[0] = "1";
}

答案 4 :(得分:0)

即使您正在初始化,数组也会被split()的结果替换。

我认为跟随鳕鱼会对你有用

ArrayList<String> InOutsNum = new ArrayList<String>();

ArrayList<String> InOutsFinal = new ArrayList<String>();

String[] strTemp = new String[2];

String temp = "[3:0] data1";
// temp.trim(); better to include this
if(temp.indexOf(' ')==-1)
{
 strTemp[1] = temp; //can be replaced by InOutsNum.add(temp);

  strTemp[0] = "1"; //can be replaced by InOutsFinal.add("1"); if you don't want the array values

}
else
{
strTemp = temp.split(" ");
InOutsNum.add(strTemp[0]);  
InOutsFinal.add(strTemp[1]);

//even this can be replaced by using substring functions like
//int index=temp.indexOf(' ');
//InOutsNum.add(temp.substring(0,index));  
//InOutsFinal.add(temp.substring(0,temp.indexOf(' ',index+1)));


}

通过使用条件运算符(:?)

可以避免这些冗长的代码