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

