-2

目标 -

尝试用很少的函数创建类 - 创建数组并用它做一些操作现在我希望用户输入数组的长度并且程序将它返回给用户

做了什么?-

创建类:

public class Array {
    private int myArray[];
    private int count;

    Array(int length){
        myArray = new int[length];// create mas of diff length
        count =0 ; // count q-ty of elements
    }

    //array out
    public static void outArray(int array[]){
        int length = array.length;
        for (int i=0; i<length+1; i++){
            System.out.println("Element number ["+i+"] is ["+ array[i]+"]");
        }
    }

主要:

public static void main(String[] args) throws IOException {
    System.out.println("What length of your array? []");
    Array matrix = new Array(Array.getCharToInt());
    Array.outArray(matrix);
....

发生了什么 -

这里我有一些问题 Array.outArray(matrix);

问题 -

我在哪里做错了?也尝试了很多变体,但无法理解我做错了什么。


更改获取数组实例的函数,但现在我的方法有问题.. - 无法获取数组的长度`

Array(int length){
    myArray = new int[length];// create mas of diff length
    int myLength=myArray.length;
}

//array out
public static void outArray(Array array){
    int length = array.myLength; - cant do like this - "myLength cannot be resolved or is not a field".

我想如果我向构造函数添加一些字段,我可以使用它还是我做错了什么?

4

2 回答 2

1

定义数组的正确方法是:

private int[] myArray;

所以你的构造函数和类将是:

public class Array {
private int[] myArr;
private int count;

public Array(int length) {
    myArr = new int[length];
    count = 0;
}

public int[] getInnerArray() {
    return myArr;
}

public static void processArray(Array array) {
    int[] innerArray = array.getInnerArray();
    int length = innerArray.length;
    for (int i=0; i<length; i++) {
        System.out.println("Next [" + i + "] is - " + innerArray[i]);
    }
}

但您也可以将 public static void processArray(Array array) 方法更改为实例方法:

 public void processArray() {
    int[] innerArray = myArr;
    int length = innerArray.length;
    for (int i=0; i<length; i++) {
        System.out.println("Next [" + i + "] is - " + innerArray[i]);
    }
}

主要功能将是:

public static void main(String[] arg) {
    System.out.println("What length of your array? []");
    Array matrix = new Array(666);
    matrix.processArray();
}
于 2013-02-18T21:18:57.203 回答
1

首先,我建议您仔细阅读 Perception 和 Java 的帖子。对于“myLength 无法解决或不是字段”的问题,是因为您正在调用 array.myLength。myLength 是您在调用 Array 类时创建的变量。请记住,每次调用类的新实例时,它们都是分开的。如果您想在一个类中使用不同的方法,请在您的主项目类中创建该类的一个实例,即......您还使用了从未使用过的 Array 类中的私有变量声明。

在 java.lang.reflect.Array 中还有一个名为“Array”的类。如果您尝试创建自己的类而不是覆盖类中的方法,您可能还需要考虑重命名 Array 类。然后执行以下操作:

public static void main(String[] args) throws IOException {
MyArrayClass mAC = new MyArrayClass;
System.out.println("What length of your array? []");
int[] matrix = new int[mAC.getCharToInt()];
mAC.outArray(matrix);

然后将您的 outArray 方法更改为

public static void outArray(int array[]){
int length = array.length;
for (int i=0; i<length; i++){
System.out.println("Element number ["+i+"] is ["+ array[i]+"]");
}

我喜欢使用私有变量,您尝试过使用,但是您还需要实现获取变量的 getter 和 setter 方法。

于 2013-02-18T21:29:31.707 回答