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

如何检查数组中是否包含含空格的单词?Java代码运行异常求助

问题出在Scanner.next()的特性上!

你遇到的问题核心在于Scanner.next()这个方法的行为:它以任意空白字符(空格、换行、制表符等)作为分隔符,每次只会读取到第一个空格为止的内容。举个例子,当你输入hey guys时,第一次调用next()会拿到hey,第二次调用才会拿到guys——你的代码里永远不会读到完整的hey guys字符串,自然就匹配不上啦。

两种快速解决方法

方法1:改用Scanner.nextLine()读取整行内容

nextLine()会读取从当前光标位置到换行符的所有内容,包括中间的空格,完美适配带空格的字符串。不过要注意一个小坑:你之前用了nextInt()读取数字,它会在输入缓冲区里留下一个换行符,直接调用nextLine()会先读到这个空的换行内容,所以得先调用一次nextLine()把它“吃掉”。

修改后的完整代码:

import java.util.Scanner;

public class CheckSpaceWord {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int num = in.nextInt();
        // 处理nextInt()留下的换行符,避免第一次nextLine()读到空字符串
        in.nextLine();
        
        String[] array = new String[num];
        for (int i = 0; i < num; i++) {
            array[i] = in.nextLine();
            if (array[i].equals("hey guys")) {
                System.out.println("hey guys");
            } else {
                System.out.println("buzz");
            }
        }
        
        in.close();
    }
}

方法2:修改Scanner的分隔符为换行符

如果你更习惯用next(),可以把Scanner的分隔符设置成只识别换行符,这样next()就会把整行内容(包括空格)当成一个完整的输入项来读取。

代码示例:

import java.util.Scanner;

public class CheckSpaceWord {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 将分隔符设置为换行符,让next()读取整行内容
        in.useDelimiter("\n");
        
        // 因为分隔符改了,直接用next()读取数字字符串再转成int
        int num = Integer.parseInt(in.next());
        
        String[] array = new String[num];
        for (int i = 0; i < num; i++) {
            array[i] = in.next();
            if (array[i].equals("hey guys")) {
                System.out.println("hey guys");
            } else {
                System.out.println("buzz");
            }
        }
        
        in.close();
    }
}
小提示
  • 方法1里的换行符处理一定要记得,不然第一次循环会读取到空字符串,导致逻辑出错。
  • 方法2中如果还是想用nextInt(),其实也可以,但要注意nextInt()会跳过换行符之外的空白,不过因为我们把分隔符设成了换行,所以nextInt()会正确读取数字,之后同样需要处理留下的换行符,不如直接用Integer.parseInt(in.next())来得省心。

内容的提问来源于stack exchange,提问作者Naeema Ibrahim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:43:32