【发布时间】:2013-12-25 20:03:04
【问题描述】:
我正在为我的班级开发一个程序,但现在我遇到了拆分字符串和子字符串的问题。我已将来自不同类的数据保存在带有分隔符的字符串中,以供以后拆分(/)使用。这部分工作正常,我得到了所有字符串,因为我应该保存在一个新的字符串数组中。
后来我尝试在一个 for 循环(字符串单词:字符串数组)中烤它们,一切看起来都很好。但是我在从 word 中剪切子字符串时遇到问题。我想得到数字(在“-”和“k”之间),但它总是抛出一个字符串超出索引错误,我不知道为什么。当我尝试烘烤我想要获取子字符串的字符串的位置时,它显示它们很好,但是当我尝试使用它们进行子字符串时,它再次引发错误。
错误
"java.lang.RuntimeException: 无法启动活动 组件信息{com.example.uiuracun/com.example.uiuracun.Bill}: java.lang.StringIndexOutOfBoundsException:长度=29;区域开始=22; 区域长度=-18"
守则
package com.example.uiuracun;
import android.R.anim;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class Bill extends ListActivity {
// Removed extra code
private void split(String[] string) {
for (String word:string){
word.trim();
int start = 0;
int end = 0;
start = word.indexOf('-');
end = word.indexOf('k');
String c = word.substring(start, end);
}
}
}
【问题讨论】:
-
你能给出一个输入输出样本吗?
-
你的字符串看起来像包含
-k,你可以创建一个SSCCE你不需要的帖子代码,你的问题似乎在你的方法split,那里有很多噪音。 -
start 加一,end 减一
-
@AniruddhaSarkar,你说对了一半。 start 应该增加,但 endIndex 是独占的(所以很好)。 docs.oracle.com/javase/7/docs/api/java/lang/…, int)
标签: java android string split arrays