2016-03-20 10 views
0

Так что я пытаюсь сделать список, который у меня есть, и начать в конце. Оттуда мне нужно вернуться назад и вернуть список в виде строки. Итак, у моего массива «Слова текут, как бесконечный дождь, в бумажную чашку». Я пытаюсь сделать их cuppaperainto ... и так далее. Это мой код, но он дает мне ошибку, не найденную в моем списке.size и list.listIterator. Просто интересно, что я делаю неправильно и как решить эту проблему.Использование 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; 
} 
} 

ответ

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, но вы пытаетесь позвонить listIterator() на объект list, который, как я думаю, вы хотели использовать, когда вы создали метод main().

  2. Внутри время цикла:

    String str = iter.previous() + 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; 
} 
0

Вы объявляя строки внутри цикла

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

Try

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