2016-03-20 9 views
0

Also was ich versuche zu tun ist, nehmen Sie die Liste, die ich habe und am Ende beginnen. Von dort muss ich rückwärts gehen und die Liste als String zurückgeben. Also mein Array hat "Worte fließen wie endloser Regen in einen Pappbecher". Ich versuche, sie zusammen zu machen ... und so weiter. Dies ist mein Code, aber es gibt mir ein Symbol nicht gefunden Fehler auf meinem list.size und list.listIterator. Ich frage mich nur, was ich falsch mache und wie ich dieses Problem beheben kann.Mit ListIterator am Ende einer Liste zu verketten beginnen

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

Antwort

1

Sie haben nur die Namen und den Umfang ein wenig von diesem Codeblock gemischt

public static String concatenateBackwards(List<String> words) 
{ 
    ListIterator iter = list.listIterator(list.size()); 
    while (iter.hasPrevious()) 
    { 
    String str = iter.previous() + str; 
    } 
    return str; 
} 
  1. Die Methode dauert List<String> words, aber Sie versuchen, listIterator() auf ein Objekt list aufrufen, die Sie verwenden wollten, wenn Sie innerhalb der main() -Methode erstellt.

  2. Innerhalb der while-Schleife:

    String str = iter.previous() + str; 
    

    Sie haben str zunächst zu erklären, bevor Sie es verwenden können. So verschieben Sie die str Deklaration vor der while Schleife. Auch die return str; weiß nicht über den Gültigkeitsbereich tr, weil es innerhalb der While-Schleife Körper deklariert ist.

Lösung:

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

erklären Sie den String in der Schleife

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

Versuchen

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