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

时间:2016-03-20 15:04:23

标签: java concatenation listiterator

所以我要做的就是拿出我的清单,然后从最后开始。从那里我需要向后返回并将列表作为字符串返回。所以我的阵列已经#34;言语像无尽的雨水一样流出纸杯#34;我试图让他们成为cuppaperainto ......等等。这是我的代码,但它在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;  
 }
}

2 个答案:

答案 0 :(得分:1)

你刚才从这个代码块中得到了名称和范围的混合

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,但您尝试在{(1}}上调用listIterator(),我认为您在main()方法中创建时想要使用该对象list

  2. 在while循环中:

    String str = iter.previous() + str; 
    

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

  3. 解决方案:

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

答案 1 :(得分:0)

您在循环中声明了字符串

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

尝试

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