-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 の基本コースを受講することをお勧めします。オラクルが提供するチュートリアルは非常に優れているので、お金をかけたくない場合はお勧めします。いくらかお金を使う気があるなら、Liangs の Java 入門、総合版は良い出発点です。

于 2013-03-04T13:57:46.640 に答える
1

まず第一に、あなたはそれを正しく初期化していません。

int anArray[][];

次のようにする必要があります。

int[][] anArray;

これが変数の設定方法です。この場合、最初に型を int として宣言しますが、2 次元配列である int であるため、int[][] を使用する必要があります。この時点で、このクラス全体でアクセスできるはずです。

main メソッドでは、取得したい場合は args[] を使用してユーザー入力を取得する必要があります。現在、自分で値 5 を設定しています。

int size = args[0] は、args[] がどのように機能するかを知っていれば機能する可能性があります。その説明は次のとおりです。「String args[]」とは何ですか? main メソッド Java のパラメーター

サイズの整数を取得したら、anArray のコンストラクターを呼び出す必要があります。これは、現時点では構築されていないためです。これは次のようになります (正方形にしたい場合):

anArray = new int[size][size]  

このリンクは、2 次元配列を作成する方法をさらに明らかにするのに役立ちます: 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 に答える