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

Java 如何通过主类中的实例化来访问数组?可供同一类中的所有类访问,java,arrays,Java,Arrays,我想运行一个返回数组的方法。代码如下: 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.print

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

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;
}

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

您需要像这样声明数组:

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

}
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();
    }
}
通过这种方式,您可以从任何其他类访问此数组,它将保留在确切的数组中(这就是静态的用途)。例如:

从Class1-
YourClass.square
从Class2-
YourClass.square

两者都是相同的数组实例

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

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

}
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();
    }
}

但是在这种情况下,您可以在整个类中更改方法中
数据
字段的内容。

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


公务舱返回舱{

/**
 * @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
*/
公共静态void main(字符串[]args){
int[]data=getArray();
for(int i:数据){
系统输出打印(i+“”);
}
线性搜索(数据);
}
/**
* 
*@返回
*/
公共静态int[]getArray(){
整数平方[]=新整数[5];
int输入=0;
System.out.println(“输入1-49之间的有效整数”);
System.out.println(“对于数组输入,请\\(^-^)/”;
System.out.println(“记住(^)),不要重复数字”);
扫描仪阅读器=新扫描仪(System.in);
对于(int i=0;i<5;i++){
System.out.println(“请输入位置的整数”
+(i+1)+“数组中的“);
输入=reader.nextInt();
平方[i]=输入;
}
返回广场;
}
/**
* 
*@param数据
*@返回
*/
公共静态void linearSearch(int[]数据){
for(int a:数据){
如果(a==5){
System.out.println(“\n查找5!!”);
}
}
}
}

您可以声明私有静态int[]数据;在课堂上,你不用说返回平方,而是说data=square。数组可以在类中的任何位置访问,但不能这样做。在方法声明中,您需要提供变量u的数据类型。另一方面,如果您需要访问同一类中的变量/数组,请使用static或使用
this
来引用它。我想这不是他所要求的。我想OP需要知道的是,我们可以提供一个签名,就像他在LinearSearch中给出的那样,提供参数数据而不提及数据类型。@VivekSingh我想这正是OP想要的,因为他不希望
不断地从控制台重新输入数组的值。我把我的开关盒放在主类中,我现在把它们放在一个单独的方法中。这将解决不断重新调用该方法的问题。我将添加一个while语句,以保持开关不断地重新出现以供输入。谢谢你的建议-完全的新手。谢谢你,我现在正在玩弄这个,因为它将在12小时后上课。