我正在研究这个方法,你可以看到我有for循环,但我想做的是每次调用这个方法时返回下一个项目(下一个名字)。但是对于最后的回报声明,我不知道该放什么?
到目前为止,我有这个:
public String getChosenInputFileNames() {
setNames();
for (int i = 0; i < names.size(); i++) {
if (i == 0) {
return String.valueOf(i);
} else {
return String.valueOf(i + 1);
}
}
return null;
}
基本上,我想每次都继续返回下一个arrayList Item,我称之为this方法。任何帮助将不胜感激!
答案 0 :(得分:1)
使用数组列表实现/填充队列,并在每次调用方法时生成poll()
...因此您不需要处理集合中的任何索引(队列将为您执行此操作并且如果您错误地尝试超出大小,将返回null)
示例:(如果你真的不需要,请不要使用静态)
static Queue<String> myQueue = new LinkedList<>();
public static void main(String[] args) {
myQueue.add("2");
myQueue.add("4");
myQueue.add("6");
myQueue.add("8");
myQueue.add("10");
for (int i = 0; i < 7; i++) {
System.out.println(getChosenInputFileNames());
}
}
public static String getChosenInputFileNames() {
return myQueue.poll();
}
答案 1 :(得分:0)
您的方法当前正在做的是每次调用它时返回"0"
,这远远超出您的预期行为。
您在此处尝试执行的操作已存在于标准库中。它被称为Iterator
,特别是Iterator.next()
。
以下是使用Iterator
。
// names contains "Tom", "Dick", "Harry"
Iterator<String> iterator = names.iterator();
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
/*
Output:
Tom
Dick
Harry
*/
请参阅?这正是你想要的!
您可以使用带迭代器的while
循环代替for循环:
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
答案 2 :(得分:0)
不需要后续的return语句,你可以保存String的值,然后从last return语句返回。
public String getChosenInputFileNames() {
String name ="";
for (int i = 0; i < names.size(); i++)
{
if(your condtion)
{
name = names.get(i);
break;
}
}
return name;
}