我有一个for循环,我在其中测试列表的大小。
for(int i = 0; i< thumbLinks.size(); i++) {
Log.e("URL" + i, thumbLinks.get(i));
url0 = thumbLinks.get(i);
url1 = thumbLinks.get(i);
//Fix index out of bounds exception
url2 = thumbLinks.get(i);
}
当我每次添加时,你可以看到我要求我3次获得3个网址。因为我不确定我将拥有多少URL。我用i来增加。 我想要的正确输出是
url0 = thumbLinks.get(i);// which is support to be equivalent to 1
url1 = thunkLinks.get(i);//which is suppose to be equivalent to 2
依旧......
但是我的代码没有这样做......
每次为每个网址添加1个。 我怎样才能解决这个问题 ?
答案 0 :(得分:8)
编辑:好的,所以听起来你真的只想处理最多三个网址。所以你需要这样的东西:
String url0 = thumbLinks.size() > 0 ? thumbLinks.get(0) : null;
String url1 = thumbLinks.size() > 1 ? thumbLinks.get(1) : null;
String url2 = thumbLinks.size() > 2 ? thumbLinks.get(2) : null;
// Use url0, url1 and url2 where any or all of them may be null
编辑:我假设你想要出于某种原因分三批处理这些网址。如果情况并非如此,则不清楚 试图做什么。
您的代码不明确 - 您在i
的来电之间没有增加thumbLinks.get(i)
- 但我怀疑您需要以下内容:
if (thumbLinks.size() % 3 != 0) {
// What do you want to do if it's not a multiple of three?
throw new IllegalArgumentException(...);
}
for (int i = 0; i < thumbLinks.size(); i += 3) {
String url0 = thumbLinks.get(i);
String url1 = thumbLinks.get(i + 1);
String url2 = thumbLinks.get(i + 2);
// Use url0, url1 and url2
}
或者:
int i;
for (i = 0; i < thumbLinks.size() - 2; i += 3) {
String url0 = thumbLinks.get(i);
String url1 = thumbLinks.get(i + 1);
String url2 = thumbLinks.get(i + 2);
// Use url0, url1 and url2
}
for (; i < thumbLinks.size(); i++) {
// Deal with the trailing URLs here, one at a time...
}
答案 1 :(得分:2)
试试这个
String[] url=new String[thumbLinks.size()];
for(int i = 0; i< thumbLinks.size(); i++)
{
Log.e("URL" + i, thumbLinks.get(i));
url[i]=thumbLinks.get(i);
}
答案 2 :(得分:0)
你的for循环中有一个动态变量,这是坏代码设计。您可以在第一部分中使用动态值,例如
for(x = getsomedymicvalue(); x > 0; x--)
{ .. }
但是在第二部分中有一个是危险的,可能会导致抛出异常(如果它们在循环期间发生变化),应该尽可能避免。