You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BlueJ中使用while循环实现单词存入ArrayList的问题求助

解决你的while循环与ArrayList问题

嘿,我看到你在BlueJ里用while循环给ArrayList添加单词时碰到了问题,咱们一步步拆解问题、修正代码~

先说说你现有代码里的几个关键问题:

  • while循环的条件错误:你写的while (done = false)是赋值操作,不是比较!每次循环都会把done强行设为false,哪怕你输入stop把done改成true,下一次循环开头又会被重置成false,导致循环永远停不下来。正确的写法应该是用比较运算符==,或者更简洁的while (!done)(表示“当done为false时继续循环”)。
  • 没有将单词添加到ArrayList:你的代码只处理了stop的情况,完全没把输入的其他单词存入words列表,这可达不到收集单词的目的哦。
  • 代码结构不完整:你的while循环和if语句都缺了闭合的大括号,BlueJ肯定会报编译错误的。
  • ArrayList初始化不够规范:Java 7及以后支持菱形语法,写成new ArrayList<>()就可以,不用重复写String,更简洁。

修正后的完整代码

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Collections; // 用来排序的工具类

public class WordSorter {
    public static void main(String[] args) {
        ArrayList<String> words = new ArrayList<>(); // 规范初始化
        Scanner keys = new Scanner(System.in);
        System.out.println("Enter words...enter stop to finish, I will sort them alphabetically");
        
        boolean done = false;
        while (!done) { // 用!done替代==false,更易读
            String word = keys.next();
            if (word.equals("stop")) {
                done = true;
            } else {
                words.add(word); // 将非stop的单词加入列表
            }
        }
        
        // 按题目要求排序并输出
        Collections.sort(words);
        System.out.println("Sorted words: " + words);
        keys.close(); // 记得关闭Scanner,养成好习惯
    }
}

额外小提示:

  • 如果要忽略大小写(比如输入Stop也能终止),可以改成word.equalsIgnoreCase("stop")。
  • 测试的时候,输入完所有单词后输入stop,就能看到排序后的结果啦~

内容的提问来源于stack exchange,提问作者ghost hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:18:27