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
相关产品推荐
相关产品推荐

