使用 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;
}
该方法接受 List<String> words
但您正试图在一个对象 list
上调用 listIterator()
,我认为您在main() 方法。
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;
}
所以我想做的是获取我拥有的列表并从末尾开始。从那里我需要倒退 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;
}
该方法接受
List<String> words
但您正试图在一个对象list
上调用listIterator()
,我认为您在main() 方法。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;
}