StringBuilder根据索引输出

StringBuilder根据索引输出

如果第一个输入是“ 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 + " | ");
}

关于java - StringBuilder根据索引输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57778606/

10-10 19:36