-3

这可能是一个非常简单的答案,但我什至不确定要搜索什么才能找到它,所以我想我最好问一下。

我真的不明白如何创建一个我可以在整个 java 程序中使用的变量(特别是一个数组)?该变量需要通过多种方法访问,其大小由用户输入(args)设置。任何人都可以对此有所了解吗?为任何帮助而欢呼。

Public class example{

 //this is the array that needs accessing from multiple places
 int anArray[][];

 public static void main(String args[]){

   int size = 5;
   add1(size);
   add2(size);
 }

 public static void add1(int size){

   //seeing as the size of the array is being defined by the user input, it's created here after being passed the size argument. 

 }

 public static void add2(int size){

    //add more content to the array here
 }
}
4

5 回答 5

2

小心那些讨厌的静态修饰符......在处理多线程的东西时可能会带来很多麻烦......

您应该考虑对象实例。该main方法是静态的:它属于类本身,而不是实例。new因此,首先,您必须通过使用关键字构造一个实例来创建类的实例,如下所示:

Public class Example{ //note: Class Names Start UpperCased!

 //this is the array that needs accessing from multiple places
 int anArray[][];

 public static void main(String args[]){
   int size = 5;

   Example example = new Example(); // create instance
   example.add1(size); //using the instance
   example.add2(size);
 }

 public void add1(int size){ //note: no static!

   //seeing as the size of the array is being defined by the user input, it's created here after being passed the size argument. 
   anArray = new int[size][size]; //you can create it here

 }

 public void add2(int size){ //note: no static
    //add more content to the array here
    //do something here
    System.out.prin
 }
}

然而,OOP 编程还有很多微妙之处,比如我会在构造函数中进行初始化,接受初始大小等等。

于 2013-03-04T13:57:28.777 回答
2

您首先要为该类创建一个构造函数,用于初始化对象:

public example() {
    anArray = new Integer[10][10]();
}

现在您已经初始化,您可以在其他方法中访问该变量,例如 add1 方法:

public void add1(int size) {
    anArray[1][1] = size;
}

您说得对,这个问题非常基础,最好先上 Java 基础课程。Oracle提供的教程非常好,如果您不想花钱,我会推荐它。如果你愿意花点钱,梁的Java入门,综合版是一个不错的起点。

于 2013-03-04T13:57:46.640 回答
1

首先,您正在错误地初始化它。

int anArray[][];

应该:

int[][] anArray;

这就是您设置变量的方式。首先,在这种情况下,您将类型声明为 int,但它是一个 int,它是一个 2d 数组,因此您必须使用 int[][]。此时应该可以在整个此类中访问它。

现在在 main 方法中,如果这是您想要的方式,您必须使用 args[] 获取用户输入。现在,您自己将值设置为 5。

如果您知道 args[] 的工作原理, int size = args[0] 可能会起作用。这是对此的解释:什么是“String args []”?主要方法Java中的参数

一旦你得到你的大小整数,你必须调用 anArray 的构造函数,因为现在它还没有被构造。这看起来像(如果你希望它是一个正方形):

anArray = new int[size][size]  

此链接可能有助于进一步了解如何创建二维数组:http ://www.java2s.com/Code/Java/Collections-Data-Structure/CreatingaTwoDimensionalArray.htm

于 2013-03-04T14:05:13.800 回答
0

采用:

static int anArray[][];

静态变量可以通过静态和非静态方法访问。

静态方法不能访问非静态变量。

于 2013-03-04T13:57:06.190 回答
0

我建议在您使用的任何编辑器(eclipse 或我假设的东西)中创建一个新项目,然后制作一个包含构建其他(逻辑类或 GUI)fx 对象的主程序的类文件。

设置类的好方法是这样的:

class ClassYourMaking {

    // Field Values go here. (variables that are used throughout a 
    // class is called field values).

    variable1; (notice no instanciation.)
    variable 2;
    // etc.

    // Constructor(s).
    public ClassYourMaking() {  // perhaps some params if it makes sense.
        // field values are usually initialized in the constructor somehow.
    }

    // Methods goes here.

    public void method1() {
        // something.
    }


}

然后你可以有一个主程序,它不一定是唯一的方法,但你最好习惯于制作一个小的主程序。

class ClassYourMakingsMainProgram {

    public static void main(String[] args) {

        ClassYourMaking newInstance = new ClassYourMaking();

        // you can then reach into the object of your class like so:

        newInstance.method1();
    }
}

如果这一切对您来说毫无意义,请帮自己一个忙,阅读类层次结构和使用 Java 中的对象。通过前几英里可能有点困难,但一旦你习惯了,你就不会有那么多问题了。

于 2013-03-04T14:00:11.573 回答