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

Java飞机名称数组程序输出异常:我哪里出错了?

问题分析与解决方案

嘿,我来帮你排查这个问题~从你贴的代码和描述来看,大概率是两个常见的小问题导致输出异常,咱们一步步来解决:

1. 输入缓冲区的遗留换行符问题

当你用sc.nextInt()读取飞机数量时,输入数字后按下的**回车键(换行符)**会留在Scanner的输入缓冲区里。如果后续你想读取带空格的飞机名称(比如"Airbus A380"),用sc.next()只会读到空格前的部分;就算名称是单个单词,这个遗留的换行也可能导致后续读取逻辑出现奇怪的行为。

解决方法:在sc.nextInt()之后,额外调用一次sc.nextLine()来清空缓冲区里的换行符:

numOfAircrafts = sc.nextInt();
sc.nextLine(); // 清空输入缓冲区的换行符

2. 缺少数组输出代码

看你贴的代码,只完成了将飞机名称存入数组的步骤,但完全没有写输出数组内容的代码!这肯定看不到结果呀😅

解决方法:在数组赋值完成后,添加一个循环遍历数组,把每个元素打印出来:

// 输出数组中的飞机名称
System.out.println("你输入的飞机名称如下:");
for(int i = 0; i < numOfAircrafts; i++) {
    System.out.println(stringArray[i]);
}

完整修正后的代码

import java.util.Scanner;
public class Qa2QeArray2 {
    public static void main(String[] args) {
        int numOfAircrafts;
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter num Of Aircrafts : ");
        numOfAircrafts = sc.nextInt();
        sc.nextLine(); // 新增:清空换行符
        
        // 初始化数组
        String[] stringArray = new String[numOfAircrafts];
        System.out.println("Please enter the names of the Aircrafts : ");
        
        for(int i = 0; i < numOfAircrafts; i++) {
            // 如果飞机名称包含空格,把sc.next()改成sc.nextLine()
            stringArray[i] = sc.nextLine();
        }
        
        // 新增:输出数组内容
        System.out.println("\n输入的飞机名称列表:");
        for(String aircraft : stringArray) {
            System.out.println(aircraft);
        }
        
        sc.close(); // 别忘了关闭Scanner
    }
}

额外提醒

如果你的飞机名称包含空格(比如"Boeing 747"),一定要用sc.nextLine()代替sc.next(),因为sc.next()只会读取到第一个空白字符(空格、回车等)之前的内容,会导致名称被截断哦~

内容的提问来源于stack exchange,提问作者s.p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:56