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小时后上课。