簡體   English   中英

如何通過主類中的實例化使數組可訪問? 可訪問同一班級的所有班級

[英]How to make an Array Accessible from instantiation in main class? Accessible to all classes in same class

我想運行一個返回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();這樣的變量int[] data = getArray(); 我將如何做到這一點,以便同一類中的其他方法可以訪問數據,所以我可以做類似的事情

public static int linearSearch(data) {
}

不必經常重新輸入數組的值?

您需要像這樣聲明我的數組:

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

}

這樣,您可以從任何其他類訪問此數組,並且該數組將保留在確切的數組中(這是靜態的)。 例:

從Class1- YourClass.square從Class2- YourClass.square都是相同的數組實例

您可以嘗試引入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字段的內容。

這可以通過兩種方式完成:
-將變量聲明為類級變量
-或在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!!"); } } } 

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM