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

我是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();

       }

    }

}

您能否尽可能彻底地解释我做错了什么以及如何纠正它。谢谢。


叮当猫咪
浏览 97回答 2
2回答

慕田峪4524236

您不是在创建新的数组类型,而是在创建一个包含数组的类。因此PrimitiveArray intArray[],又名 a PrimitiveArray[],并不完全是您想要的。它只是一个普通的PrimitiveArray,它已经表示包含数组字段的东西。public class PrimitiveArray {&nbsp; &nbsp; int[] internal; //this data should be accessed through a method, encapsulation&nbsp; &nbsp; public PrimitiveArray(int amount) {&nbsp; &nbsp; &nbsp; &nbsp; this.internal = new int[amount];&nbsp; &nbsp; }}public class Main {&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; Random rand = new Random();&nbsp; &nbsp; &nbsp; &nbsp; PrimitiveArray intArray = new PrimitiveArray(5);&nbsp; &nbsp; &nbsp; &nbsp; //this may do well in the constructor, which you can pass your random to&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < intArray.internal.length; i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; intArray.internal[i] = rand.nextInt();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}

犯罪嫌疑人X

让我们从 开始PrimitiveArray,有一个intArray字段对同一包的成员可见(这有点奇怪);通常你会做到的private。你还没有给出PrimitiveArray一个length字段。您需要访问和更改intArray. 然后,我相信您可能会发现覆盖toString()是输出值的简单方法。就像是,public class PrimitiveArray {&nbsp; &nbsp; private int[] intArray;&nbsp; &nbsp; public int length;&nbsp; &nbsp; public PrimitiveArray(int amount) {&nbsp; &nbsp; &nbsp; &nbsp; this.length = amount;&nbsp; &nbsp; &nbsp; &nbsp; this.intArray = new int[amount];&nbsp; &nbsp; }&nbsp; &nbsp; public void set(int i, int v) {&nbsp; &nbsp; &nbsp; &nbsp; if (i >= 0 && i < length) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.intArray[i] = v;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; public int get(int i) {&nbsp; &nbsp; &nbsp; &nbsp; if (i >= 0 && i < length) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return this.intArray[i];&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return -1;&nbsp; &nbsp; }&nbsp; &nbsp; public String toString() {&nbsp; &nbsp; &nbsp; &nbsp; return Arrays.toString(intArray);&nbsp; &nbsp; }}最后,在调用它时;你不需要一个PrimitiveArray(s) 数组,并且需要使用类似上面的getandset方法(因为 Java 没有运算符重载)。就像是,public static void main(String[] args) {&nbsp; &nbsp; Random rand = new Random();&nbsp; &nbsp; PrimitiveArray intArray = new PrimitiveArray(5);&nbsp; &nbsp; for (int i = 0; i < intArray.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; intArray.set(i, rand.nextInt());&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println(intArray);}PS,正如@Tom在评论中指出的那样,尽管我最初这样做是为了满足您的原始代码;length不应该是一个public字段,也应该通过方法来访问。喜欢,public class PrimitiveArray {&nbsp; &nbsp; private int[] intArray;&nbsp; &nbsp; public int length() {&nbsp; &nbsp; &nbsp; &nbsp; return intArray.length;&nbsp; &nbsp; }和for (int i = 0; i < intArray.length(); i++) {
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java