总线列的MY数据库值。 12,34,56,8,9,...我试图只提取总线号而不是逗号并将它们添加到String ArrayList中。任何人都有任何想法? :
我真的很困惑。继承我的代码:for(int i =0; i< buses1.length() ; i++ )
{
if(buses1.charAt(i) == ',')
{
}
else
{
bus1 += Character.toString(buses1.charAt(i));
buses.add(bus1);
}
}
此时,代码正在添加,&#34; 1&#34;,&#34; 2&#34; ,&#34; 3&#34; ,&#34; 4&#34;不是&#34; 12&#34;,&#34; 34&#34; .... 任何人都有理想吗?
答案 0 :(得分:5)
摆脱现有的逻辑。您只需要将String#split()
作为","
的分隔符,它将您的总线号码作为数组返回。
以下行就够了
String[] numbers = columnValue.split(",");
然后你的ArrayList delcaration转为
List<String> busesList = new ArrayList<String>(Arrays.asList(numbers));
答案 1 :(得分:1)
您所要做的就是使用&#39;&#39;来分割字符串。分隔符。
List<String> buses = Arrays.asList(buses1.split(","));
编辑:确保通过这样做,buses
将是一个不可修改的列表(您无法在其中添加/删除元素的列表)。如果您需要一个可修改的列表,您可以轻松地将其包装成一个:
List<String> buses = new LinkedList<String>(Arrays.asList(buses1.split(",")));
答案 2 :(得分:0)
其他答案已经解释了建议解决这个问题的方法。我只是想指出你目前的尝试失败的原因。
为了获得你描述的效果,它实际上必须是这样的:
for (int i = 0; i < buses1.length(); i++ ) {
String bus1 = "";
if (buses1.charAt(i) == ',') {
} else {
bus1 += Character.toString(buses1.charAt(i));
buses.add(bus1);
}
}
问题是你要添加一个&#34;总线&#34;到错误点的列表。当您获得(单个或多个数字)总线号码的最后一个字符时,需要添加它。但是你要为每个数字添加它。
您的代码实际上必须是这样的:
String bus1 = "";
for (int i = 0; i < buses1.length(); i++ ) {
if (buses1.charAt(i) == ',') {
// When we see a comma, we know that is the end of the bus number.
if (!bus1.isEmpty()) {
buses.add(bus1);
bus1 = "";
}
} else {
// Accumulate the digits of the current bus number.
bus1 += Character.toString(buses1.charAt(i));
}
}
// Deal with stuff after the last comma.
if (!bus1.isEmpty()) {
buses.add(bus1);
}
请注意,我们可以通过几种重要方式改进这一点。但是使用此版本可以更容易地看到与(假设的)原始代码的关系。