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

Java程序求助:输入单词列表后数组空元素被输出问题

解决你的Java单词列表打印问题

嘿,我来帮你搞定这个问题!你遇到的情况很常见——因为你用了固定长度的数组,但实际输入的单词数量远小于数组的长度(20),那些没被赋值的数组位置默认是null,所以最后循环打印整个数组时,这些null就被显示出来了。而且还要注意,你输入的quit也被存进数组里了,其实我们也不需要打印它对吧?

方案一:修改循环范围(基于你原有的数组代码)

你只需要调整最后打印时的循环条件,只遍历到真正有有效单词的位置就行。看代码里的i变量,它记录的是下一个要存储单词的索引——也就是说,用户输入的有效单词都存在str[0]到str[i-1]里(因为输入quit时,我们把quit存在了str[i]然后直接break,并没有递增i)。所以把打印的循环改成这样:

for (int j=0;j<i;j++) {
    System.out.println(str[j]);
}

这样就只会打印用户输入的有效单词,不会出现null和quit了。

方案二:用动态集合ArrayList(更推荐新手使用)

固定长度的数组灵活性很差,Java里有更适合这种动态添加元素场景的工具——ArrayList,它可以自动扩容,完全不用担心多余的空位置。我帮你改写了代码,还优化了quit的判断逻辑:

import java.util.Scanner;
import java.util.ArrayList;

class ques1 {
    public static void main(String[] args) {
        // 用ArrayList代替固定长度数组
        ArrayList<String> words = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        System.out.println("enter series of words and to exit write quit");
        
        while(true){
            String input = sc.nextLine();
            // 用equalsIgnoreCase同时匹配quit和QUIT,更简洁
            if(input.equalsIgnoreCase("quit"))
                break;
            // 把有效单词添加到集合里
            words.add(input);
        }
        
        System.out.println();
        System.out.println("----------------------------");
        // 用增强for循环遍历集合,直接打印每个单词
        for (String word : words) {
            System.out.println(word);
        }
    }
}

这个版本不仅解决了空位置的问题,代码也更简洁易读,以后遇到需要动态添加元素的场景,都可以优先考虑用ArrayList哦!

内容的提问来源于stack exchange,提问作者Shalini Bose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:25:03