2017-08-10 78 views
0

我正在研究这个方法,因为你可以看到我有for循环,但是我想要做的是每次调用这个方法(下一个名字)时返回下一个项目。但对于最后的回报声明,我不确定要放什么?如何返回此方法的下一个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的项目。任何帮助将非常感激!

+0

是什么名字了型 - –

+0

名称是arraylist,类型字符串 – Maiwand

回答

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 
*/ 

请参阅?这正是你想要的!

取而代之的for循环中,你可以使用一个while循环迭代器:

while(iterator.hasNext()) { 
    System.out.println(iterator.next()); 
} 
+0

非常感谢这正是我需要:) – Maiwand

0

无需后续return语句可以容纳字符串的值,然后从最后一个return语句返回。

public String getChosenInputFileNames() { 

String name =""; 

for (int i = 0; i < names.size(); i++) 
{ 
    if(your condtion) 
    { 
     name = names.get(i); 
     break; 
    } 
} 
return name; 
} 
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(); 
}