使用 ListIterator 从列表末尾开始连接

Using ListIterator to start at the end of a list to concatenate

所以我想做的是获取我拥有的列表并从末尾开始。从那里我需要倒退 return 列表作为字符串。所以我的数组有 "Words are flowing out like endless rain into a paper cup"。我正在尝试将它们做成纸杯……等等。这是我的代码,但它在我的 list.size 和 list.listIterator 上给我一个找不到符号的错误。只是想知道我做错了什么以及如何解决这个问题。

public class LabListIterators {

public static void main(String[] args) {

    List<String> list = new LinkedList<String>();

    // Add items to the List
      String [] array = {"Words", "are", "flowing", "out", "like", "endless", "rain", "into", "a", "paper", "cup"};
      for (int i = 0; i < array.length; ++i)
            list.add (array[i]);
    System.out.println(list + ", size = " + list.size());
    capitalize(list);
    System.out.println(list);
    System.out.println(concatenateBackwards(list));      
}
public static String concatenateBackwards(List<String> words)
 {
  ListIterator iter = list.listIterator(list.size());
  while (iter.hasPrevious())
  {
     String str = iter.previous() + str; 
  }
  return str;  
 }
}

您正在循环内声明字符串

  while (iter.hasPrevious())
  {
     String str = iter.previous() + str; 
  }
  return str; 

尝试

  String str ="";
  while (iter.hasPrevious())
  {
     str = iter.previous() + str; 
  }
  return str; 

您刚刚从这个代码块中混淆了名称和范围

public static String concatenateBackwards(List<String> words)
{
   ListIterator iter = list.listIterator(list.size());
   while (iter.hasPrevious())
  {
     String str = iter.previous() + str; 
  }
  return str;  
}
  1. 该方法接受 List<String> words 但您正试图在一个对象 list 上调用 listIterator(),我认为您在main() 方法。

  2. while 循环内部:

    String str = iter.previous() + str; 
    

    你必须先声明str,然后才能使用它。因此,将 str 声明移到 while 循环之前。此外,return str; 不知道 tr 的范围,因为它是在 while 循环体内声明的。

解决方案:

public static String concatenateBackwards(List<String> words)
{
   String str = "";
   ListIterator iter = words.listIterator(list.size());
   while (iter.hasPrevious())
  {
     str += iter.previous();
  }
  return str;  
}