Java中的构造函数用于初学者

时间:2013-02-18 19:55:28

标签: java arrays methods constructor

目标 -

尝试创建具有少量函数的类 - 创建数组并执行一些操作 现在我希望该用户输入数组的长度,程序将其返回给用户

怎么办? -

创建类:

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(矩阵);

问题 -

我在哪里弄错了?也尝试了很多变种,但不能理解我做错了什么。


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

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".

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

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:1)

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

还有一个名为&#34; Array&#34;的类。在java.lang.reflect.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方法来获取变量。