如果条件不匹配,我需要在数组中存储一个值,否则它应该在相对于空格分割字符串后取值。我的代码片段如下:
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
答案 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)));
}
通过使用条件运算符(:?)
可以避免这些冗长的代码