StringBuilder 根据索引输出?
StringBuilder outputting according to index?
如果第一个输入是 "Dog",第二个是 "Wolf",第三个是 "Cat"。结果如下:
Dog | Wolf | Wolf | Cat | Cat | Cat |
我的 forloop 是否导致它迭代过于频繁?
public class LabTextManipulation {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<String> parks = new ArrayList<String>();
String enteredPark;
StringBuilder sb = new StringBuilder();
boolean stop = true;
while (stop == true) {
System.out.println("Please enter your favorite National Park or Done to stop: ");
enteredPark = input.nextLine();
if (!"Done".equalsIgnoreCase(enteredPark)) {
parks.add(new String(enteredPark));
for (int i = 0; i < parks.size(); i++) {
sb.append(enteredPark + " | ");
}//end for
} else {
stop = false;
}
}
String nationalParks = sb.toString();
System.out.println(nationalParks);
}
}
预计:
" Dog | Wolf | Cat |"
实际:
" Dog | Wolf | Wolf | Cat | Cat | Cat |"
这是导致问题的原因
for(int i = 0;i < parks.size(); i++ ) {
sb.append(enteredPark + " | ");
}
每次向 parks
添加新字符串时,您都会在下一次迭代中增加添加到 sb 的重复值的计数 - 我相信您根本不应该使用循环
if(!"Done".equalsIgnoreCase(enteredPark)) {
parks.add(enteredPark); // also don't create new String here
sb.append(enteredPark + " | ");
}
如果第一个输入是 "Dog",第二个是 "Wolf",第三个是 "Cat"。结果如下:
Dog | Wolf | Wolf | Cat | Cat | Cat |
我的 forloop 是否导致它迭代过于频繁?
public class LabTextManipulation {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<String> parks = new ArrayList<String>();
String enteredPark;
StringBuilder sb = new StringBuilder();
boolean stop = true;
while (stop == true) {
System.out.println("Please enter your favorite National Park or Done to stop: ");
enteredPark = input.nextLine();
if (!"Done".equalsIgnoreCase(enteredPark)) {
parks.add(new String(enteredPark));
for (int i = 0; i < parks.size(); i++) {
sb.append(enteredPark + " | ");
}//end for
} else {
stop = false;
}
}
String nationalParks = sb.toString();
System.out.println(nationalParks);
}
}
预计:
" Dog | Wolf | Cat |"
实际:
" Dog | Wolf | Wolf | Cat | Cat | Cat |"
这是导致问题的原因
for(int i = 0;i < parks.size(); i++ ) {
sb.append(enteredPark + " | ");
}
每次向 parks
添加新字符串时,您都会在下一次迭代中增加添加到 sb 的重复值的计数 - 我相信您根本不应该使用循环
if(!"Done".equalsIgnoreCase(enteredPark)) {
parks.add(enteredPark); // also don't create new String here
sb.append(enteredPark + " | ");
}