为了账号安全,请及时绑定邮箱和手机立即绑定

我将如何使用原始数组整数创建一个类?

我将如何使用原始数组整数创建一个类?

叮当猫咪 2023-10-19 15:00:38
我是java新手,但我很了解类的工作原理,但不了解数组。我试图创建一个 PrimitiveArray 类,它有一个实例变量,一个原始整数数组。接下来,我尝试创建一个具有 [N] 个随机整数的 PrimitiveArray 对象。当我尝试在驱动程序中创建数组时,我遇到了错误。数组的类型是类(PrimitiveArray)。该错误基本上是在我调用 PrimitiveArray 时出现的。IDE 说不兼容的类型需要 PrimitiveArray[],找到了 PrimitiveArray。public class PrimitiveArray {    int intArray[];    public PrimitiveArray(int amount) {        this.intArray = new int[amount];    }}public class Main {    public static void main(String[] args) {        Random rand = new Random();        PrimitiveArray intArray[] = new PrimitiveArray(5);       for (int i = 0; i < intArray.length; i++){           PrimitiveArray[i] = rand.nextInt();       }    }}您能否尽可能彻底地解释我做错了什么以及如何纠正它。谢谢。
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您不是在创建新的数组类型,而是在创建一个包含数组的类。因此PrimitiveArray intArray[],又名 a PrimitiveArray[],并不完全是您想要的。它只是一个普通的PrimitiveArray,它已经表示包含数组字段的东西。


public class PrimitiveArray {

    int[] internal; //this data should be accessed through a method, encapsulation


    public PrimitiveArray(int amount) {

        this.internal = new int[amount];

    }

}


public class Main {


    public static void main(String[] args) {

        Random rand = new Random();


        PrimitiveArray intArray = new PrimitiveArray(5);

        //this may do well in the constructor, which you can pass your random to

        for (int i = 0; i < intArray.internal.length; i++){

            intArray.internal[i] = rand.nextInt();

        }

    }

}


查看完整回答
反对 回复 2023-10-19
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

让我们从 开始PrimitiveArray,有一个intArray字段对同一包的成员可见(这有点奇怪);通常你会做到的private。你还没有给出PrimitiveArray一个length字段。您需要访问和更改intArray. 然后,我相信您可能会发现覆盖toString()是输出值的简单方法。就像是,


public class PrimitiveArray {

    private int[] intArray;

    public int length;


    public PrimitiveArray(int amount) {

        this.length = amount;

        this.intArray = new int[amount];

    }


    public void set(int i, int v) {

        if (i >= 0 && i < length) {

            this.intArray[i] = v;

        }

    }


    public int get(int i) {

        if (i >= 0 && i < length) {

            return this.intArray[i];

        }

        return -1;

    }


    public String toString() {

        return Arrays.toString(intArray);

    }

}

最后,在调用它时;你不需要一个PrimitiveArray(s) 数组,并且需要使用类似上面的getandset方法(因为 Java 没有运算符重载)。就像是,


public static void main(String[] args) {

    Random rand = new Random();


    PrimitiveArray intArray = new PrimitiveArray(5);

    for (int i = 0; i < intArray.length; i++) {

        intArray.set(i, rand.nextInt());

    }

    System.out.println(intArray);

}

PS,正如@Tom在评论中指出的那样,尽管我最初这样做是为了满足您的原始代码;length不应该是一个public字段,也应该通过方法来访问。喜欢,


public class PrimitiveArray {

    private int[] intArray;

    public int length() {

        return intArray.length;

    }


for (int i = 0; i < intArray.length(); i++) {


查看完整回答
反对 回复 2023-10-19
  • 2 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信