Java如何编写processPass方法将分数≥60对应的passing数组元素设为true
问题解决
现有代码问题分析
- 你当前编写的
processPass方法未遍历所有有效下标,仅操作了length这一个非法下标(数组有效下标范围是0~length-1) - 判断条件逻辑错误,你判断的是
length <= 60,实际需要判断的是scores[当前下标] >= 60 - 方法内多余的打印逻辑不符合需求,不需要在方法内打印单条结果
修正后的代码实现
1. 修正processPass方法
public static void processPass(boolean[] passing, double[] scores, int length) { // 遍历所有有效下标 0到length-1 for (int i = 0; i < length; i++) { // 判断当前下标对应的分数是否>=60 if (scores[i] >= 60) { passing[i] = true; } else { // 该分支可省略,boolean数组默认初始值就是false passing[i] = false; } } }
2. 修正main方法,补充调用逻辑
你原来的main方法没有接收getData返回的有效长度,也没有调用processPass,修正后代码如下:
public static void main(String[] args) throws IOException { boolean[] isPassing = new boolean[100]; double[] scores = new double[100]; // 接收返回的有效元素个数 int length = getData(scores); // 调用processPass方法填充isPassing数组 processPass(isPassing, scores, length); // 若需要验证结果可添加以下打印逻辑 for (int i = 0; i < length; i++) { System.out.println("分数:" + scores[i] + " 是否通过:" + isPassing[i]); } }
逻辑说明
- 首先通过for循环遍历0到length-1的所有有效元素,length是你从
getData拿到的实际读取到的分数条数,避免操作数组未赋值的空位 - 每一轮循环对应判断当前下标的分数,满足>=60的条件就给同下标的passing数组赋值为true,否则为false
内容的提问来源于stack exchange,提问作者dnl
相关产品推荐
相关产品推荐

