如何为此方法返回下一个for循环项?

时间:2017-08-10 10:52:43

标签: java

我正在研究这个方法,你可以看到我有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方法。任何帮助将不胜感激!

3 个答案:

答案 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;
}