Java数组取值输出问题:现有代码无法正确读取输入并输出对应字符
问题修复方案
原代码存在两个核心问题,导致无法正确实现需求:
- 未读取控制台输入的n个数值存入
pos数组 - 遍历输出时错误使用数组长度
n作为下标,而非pos数组中存储的元素值
修复后的完整代码
import java.util.Scanner; public class Exercise { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); short[] pos = new short[n]; char[] alphabet = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; // 读取n个输入值存入pos数组 for (int i = 0; i < pos.length; i++) { pos[i] = in.nextShort(); } // 遍历pos数组,输出对应下标的字母 for (int i = 0; i < pos.length; i++) { // 建议添加下标合法性判断,避免数组越界异常 if (pos[i] >= 0 && pos[i] < alphabet.length) { System.out.print(alphabet[pos[i]]); } } in.close(); } }
关键修复点说明
- 补充输入读取逻辑:新增循环读取n个short类型输入值,逐个存入
pos数组,补上原代码缺失的核心步骤 - 修正输出下标:将
alphabet[n]改为alphabet[pos[i]],使用pos数组存储的元素作为字母数组的下标,实现按输入值对应输出字母 - 额外优化:添加输入下标合法性判断,防止非法输入导致数组越界;关闭扫描器避免资源泄漏
内容的提问来源于stack exchange,提问作者Samuele
相关产品推荐
相关产品推荐

