我对这个子字符串函数感到沮丧。这里我的子字符串函数只给我第一次值。它已存储在arraylist中的前3个字符。第二次它不能接受其他3个字符,并且它已经在arraylist中存储了"值。
我的代码如下:
String mStr= "jklpourtujolkjth";
ArrayList<String> mLst = new ArrayList<String>();
for (int i = 0; i < mStr.length(); i+=3)
{
if ((i + 3) < mStr.length())
{
mLst.add(mStr.substring(i,3));
}
else{
mLst.add(mStr.substring(i));
}
}
帮我处理这个代码。我怎么了?
谢谢,
您可能假设mStr
和mystr
是相同的。你的意思是在这两个地方都用mStr
吗?(在else块和if块中)
编辑(现在已经修复):
您应该使用mStr.substring(i,i+3)
而不是mStr.substring(i,3)
。子字符串有一个起始索引和结束索引,但您假设它有一个开始索引和长度。
String mStr= "jklpourtujolkjth";
ArrayList<String> mLst = new ArrayList<String>();
for (int i = 0; i < mStr.length(); i+=3)
{
int to=i+3;
if (to < mStr.length())
{
mLst.add(String.valueOf(mStr.substring(i,to)));
}
else
{
mLst.add(mStr.substring(i));
}
}
您忘记在子字符串方法中给定endIndex
。这就是为什么你正在跳出性观念的底线。把你的代码改成这样。。。
这里的问题是在循环中获取子字符串,这是它第一次调用
mStr.substring(0,3)) which gives the string as jkl
下一次呼叫
mStr.substring(3,3)) which will give outofboundsexception
要了解更多关于子字符串的信息,请从这里阅读文档
String mStr= "jklpourtujolkjth";
ArrayList<String> mLst = new ArrayList<String>();
for (int i = 0; i < mStr.length(); i+=3)
{
if ((i + 3) < mStr.length())
{
mLst.add(String.valueOf(mStr.substring(i,i+3)));// here is the change
}
else{
mLst.add(mStr.substring(i));
}
}
您必须在mLst.add(String.valueOf(mStr.substring(i,3)));
因为当i=6时,你将从子串(6,3)中得到什么。所以第二个参数应该是变量