如何通过主类中的实例化使数组可访问?可访问同一类中的所有类

时间:2015-02-05 07:13:52

标签: java arrays

我想运行一个返回array的方法。代码如下:

public static int[] getArray() {        
    int square[] = new int[5];
    int input = 0;

    System.out.println("Input a valid integer from 1-49");
    System.out.println("for array input please \\(^-^)/");
    System.out.println("Remember (^_'), don't repeat numbers");

    Scanner reader = new Scanner(System.in);

    for (int i = 0; i < 5; i++) {
        System.out.println(
            "Please input the integer for position " + (i + 1) + " of the array");
        input = reader.nextInt();
        square[i] = input;
    }

    return square;
}

我研究过你可以制作一个像int[] data = getArray();这样的变量 我如何才能使同一类中的其他方法可以访问数据,以便我可以执行类似

的操作
public static int linearSearch(data) {
}

无需不断地重新输入数组的值?

3 个答案:

答案 0 :(得分:0)

你需要像这样声明你的数组:

public YourClass {
    public static int[] square = new int[5];

}

通过这种方式,您可以从任何其他类访问此数组,它将保留精确数组(这是静态的)。例如:

来自Class1 - YourClass.square 来自Class2 - YourClass.square 两者都是相同的数组实例

答案 1 :(得分:0)

您可以尝试引入int[]的私有变量并为其提供延迟初始化,如下所示:

class aClass {
    int[] data; // default to the null

    private int[] getArray() {
         if (data == null) {
             // your console logic for initialization
         }
         return data;
    }

    public static int linearSearch() {
         int[] localData = getArray();
    }
}

但在这种情况下,您可以在整个班级中更改方法中data字段的内容。

答案 2 :(得分:0)

这可以通过两种方式完成:
- 将变量声明为类级变量
- 或者在main方法中将其声明为局部变量

public class ReturnIntArraysSO {

/**
 * @param args
 */
public static void main(String[] args) {
    int[] data = getArray();
    for(int i : data){
        System.out.print(i+" ");
    }
    linearSearch(data);
}

/**
 * 
 * @return
 */
public static int[] getArray() {
    int square[] = new int[5];
    int input = 0;

    System.out.println("Input a valid integer from 1-49");
    System.out.println("for array input please \\(^-^)/");
    System.out.println("Remember (^_'), don't repeat numbers");

    Scanner reader = new Scanner(System.in);

    for (int i = 0; i < 5; i++) {
        System.out.println("Please input the integer for position "
                + (i + 1) + " of the array");
        input = reader.nextInt();
        square[i] = input;
    }
    return square;
}

/**
 * 
 * @param data
 * @return
 */
public static void linearSearch(int[] data) {

    for(int a : data){
        if(a == 5){
            System.out.println("\nFound 5!!");              
        }
    }
}

/** * @param args */ public static void main(String[] args) { int[] data = getArray(); for(int i : data){ System.out.print(i+" "); } linearSearch(data); } /** * * @return */ public static int[] getArray() { int square[] = new int[5]; int input = 0; System.out.println("Input a valid integer from 1-49"); System.out.println("for array input please \\(^-^)/"); System.out.println("Remember (^_'), don't repeat numbers"); Scanner reader = new Scanner(System.in); for (int i = 0; i < 5; i++) { System.out.println("Please input the integer for position " + (i + 1) + " of the array"); input = reader.nextInt(); square[i] = input; } return square; } /** * * @param data * @return */ public static void linearSearch(int[] data) { for(int a : data){ if(a == 5){ System.out.println("\nFound 5!!"); } } }