我对这个子串函数感到沮丧。这里我的子串函数只给我第一次的价值。它已存储在arraylist中的前3个字符。第二次它无法接受其他3个字符并且它已被存储在“arralist中”。
我的代码如下:
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));
}
}
帮我解释一下这段代码。我怎么了?
谢谢,
答案 0 :(得分:0)
您可能认为mStr
和mystr
是相同的。你的意思是在两个地方使用mStr
吗? (在else块和if块中)
编辑(现在已修复):
您应该使用mStr.substring(i,i+3)
代替mStr.substring(i,3)
。 Substring采用起始索引和结束索引,但您假设它采用起始索引和长度。
答案 1 :(得分:0)
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));
}
}
答案 2 :(得分:0)
您忘记在子字符串方法中提供endIndex
。这就是为什么你得到outofboundsexception。将您的代码更改为这样......
这里的问题是在第一次调用
时获取循环中的子字符串 mStr.substring(0,3)) which gives the string as jkl
下次通话
mStr.substring(3,3)) which will give outofboundsexception
要了解有关子字符串的更多信息,请阅读here
中的文档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));
}
}
答案 3 :(得分:0)
你必须得到例外 mLst.add(将String.valueOf(mStr.substring(I,3)));
因为当i = 6时,你将从子串(6,3)得到什么。 所以第二个参数应该是变量