如何实现用户向二维数组输入5个分数?程序输出异常排查求助
针对你的两个问题的解答
问题1:如何让用户向二维数组中输入5个分数?
首先得明确场景:你是想用5行1列的二维数组单独存储5个分数,还是要把5个分数填充到更大的二维数组(比如问题2里的5x5数组)中?我给你两种常见的实现方案:
方案1:用5行1列数组存储5个独立分数
import java.util.Scanner; public class ScoreInput { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 5行1列的二维数组,对应5个分数 int[][] scores = new int[5][1]; System.out.println("请输入5个分数:"); for (int row = 0; row < scores.length; row++) { System.out.print("输入第" + (row + 1) + "个分数:"); scores[row][0] = input.nextInt(); } // 验证输入结果 System.out.println("\n你输入的分数是:"); for (int[] row : scores) { System.out.println(row[0]); } input.close(); } }
方案2:向5x5二维数组中填充5个指定位置的分数
如果是要给问题2里的5x5数组填充5个分数(比如每行的第一个位置),可以用这段代码:
import java.util.Scanner; public class ScoreInput2D { public static void main(String[] args) { Scanner input = new Scanner(System.in); int[][] ratesArray = new int[5][5]; System.out.println("请输入5个分数,将填充到数组每行的第一个位置:"); for (int row = 0; row < 5; row++) { System.out.print("输入第" + (row + 1) + "个分数:"); ratesArray[row][0] = input.nextInt(); } // 查看填充后的数组 System.out.println("\n填充后的数组:"); for (int[] row : ratesArray) { for (int num : row) { System.out.print(num + " "); } System.out.println(); } input.close(); } }
问题2:现有评估分数程序输出不正确的问题
从你给出的代码片段来看,有几个明显的问题会导致输出异常,我帮你梳理并修复:
代码片段的核心问题
- 循环不完整:你写的
for(int col = 0; col<RatesArray...终止条件缺失,直接导致编译错误,正确的5x5数组列循环应该是col < RatesArray[row].length或col < 5。 - 变量逻辑脱节:你声明了
Assessment1到Assessment5,但在RateArray()方法里完全没用到,等于白定义。 - 流程闭环缺失:
RateArray()方法返回了二维数组,但如果没有接收返回值、没有打印逻辑,自然看不到输出结果。
修复后的完整可运行代码
我把你的代码补全并优化,实现输入5位老师的5项评估分数(对应5x5数组),并完整输出结果:
import java.util.Scanner; public class Vetting { Scanner input = new Scanner(System.in); String teacherName; // 5位老师,每位对应5项评估分数 int ratesArray[][] = new int[5][5]; // 填充评估分数的方法 public int[][] rateArray() { System.out.println("请输入5位老师的5项评估分数(整数格式):"); for (int row = 0; row < ratesArray.length; row++) { System.out.println("=== 第" + (row + 1) + "位老师的评估 ==="); for (int col = 0; col < ratesArray[row].length; col++) { System.out.print("输入第" + (col + 1) + "项分数:"); ratesArray[row][col] = input.nextInt(); } } return ratesArray; } // 专门负责打印评估结果的方法 public void printRates(int[][] rates) { System.out.println("\n--- 评估分数汇总 ---"); for (int row = 0; row < rates.length; row++) { System.out.print("第" + (row + 1) + "位老师:"); for (int col = 0; col < rates[row].length; col++) { System.out.print(rates[row][col] + " "); } System.out.println(); } } public static void main(String[] args) { Vetting vetting = new Vetting(); // 调用方法填充数组 int[][] result = vetting.rateArray(); // 打印结果 vetting.printRates(result); vetting.input.close(); } }
关键优化说明
- 补全了循环终止条件,确保遍历完整的5列
- 添加了独立的打印方法,避免输出逻辑混乱
- 在
main方法中打通了“输入-处理-输出”的完整流程 - 规范了变量名(Java小驼峰命名),提升代码可读性
如果你的需求是只输入5个分数而非25个,只需要调整循环范围即可(比如把行循环改成row < 1,列循环col <5,实现输入1行5个分数)。
内容的提问来源于stack exchange,提问作者nadine jansen
相关产品推荐
相关产品推荐

