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

Java数组奇偶元素分离代码编译错误求助,请帮忙修复

修复Java奇偶数组分离代码的编译错误

错误原因梳理

  • 类中未声明numOfVal成员变量,导致方法内无法引用该变量
  • Java原生数组没有add()方法,错误调用了不存在的方法
  • oddarray和evenarray是局部变量,main方法无法直接访问
  • 类的mainarray未初始化,调用setVal()会触发空指针异常

修复后的完整代码

import java.util.Scanner;

public class CountEvenOddArray {
    // 声明类成员变量,让所有方法可访问
    int[] mainarray;
    int[] evenarray;
    int[] oddarray;
    int numOfVal;
    int evenCount = 0;
    int oddCount = 0;

    void setInpLength(int numOfVal) {
        this.numOfVal = numOfVal;
        // 初始化主数组,长度为用户输入的元素个数
        this.mainarray = new int[numOfVal];
        // 初始化奇偶数组,最大长度等于主数组长度
        this.evenarray = new int[numOfVal];
        this.oddarray = new int[numOfVal];
    }

    void setVal(int index, int val) {
        this.mainarray[index] = val;
    }

    void separateEvenOdds() {
        for (int i = 0; i < numOfVal; i++) {
            if (mainarray[i] % 2 == 0) {
                // 用计数器记录偶数数组的当前位置,赋值后计数+1
                evenarray[evenCount++] = mainarray[i];
            } else {
                // 用计数器记录奇数数组的当前位置,赋值后计数+1
                oddarray[oddCount++] = mainarray[i];
            }
        }
    }

    public static void main(String[] args) {
        CountEvenOddArray abc = new CountEvenOddArray();
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter number of elements you want to store:");
        int numOfVal = sc.nextInt();
        abc.setInpLength(numOfVal);

        System.out.println("Enter the elements of the array: ");
        for (int k = 0; k < numOfVal; k++) {
            abc.setVal(k, sc.nextInt());
        }

        abc.separateEvenOdds();
        sc.close();

        // 输出奇数数组的有效元素
        System.out.print("The array with the odd elements is: ");
        for (int i = 0; i < abc.oddCount; i++) {
            System.out.print(abc.oddarray[i] + " ");
        }
        System.out.println();

        // 输出偶数数组的有效元素
        System.out.print("The array with the even elements is: ");
        for (int i = 0; i < abc.evenCount; i++) {
            System.out.print(abc.evenarray[i] + " ");
        }
        System.out.println();
    }
}

关键修复点说明

  1. 添加类成员变量:新增numOfVal、evenarray、oddarray、evenCount、oddCount作为类成员,解决变量访问权限问题
  2. 初始化数组:在setInpLength()中根据用户输入的长度初始化所有数组,避免空指针,同时不用固定长度100,更合理
  3. 替换add()方法:用计数器evenCount和oddCount记录奇偶数组的当前存储位置,直接通过下标赋值,符合Java数组的操作逻辑
  4. 正确输出数组:遍历数组时只输出有效元素(通过计数器判断),避免输出未赋值的默认0值
  5. 方法名规范:将EvenOdds()改为separateEvenOdds(),符合Java驼峰命名规范

内容的提问来源于stack exchange,提问作者lainweb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:11:29