1

Java でA* アルゴリズムを実装しようとしています。ユーザーは、グリッドの幅と高さを入力するよう求められます。私の問題は、その入力を検証することです。これが私のコードです:

public class Map extends java.awt.Panel implements Serializable
{
JFrame frame = new JFrame();
String rows =  JOptionPane.showInputDialog(frame,
                "Συμπληρώστε τον αριθμό γραμμών του πλέγματος: \n",
                "Δημιουργία πλέγματος",
                JOptionPane.PLAIN_MESSAGE);
String cols =  JOptionPane.showInputDialog(frame,
                "Συμπληρώστε τον αριθμό στηλών του πλέγματος: \n",
                "Δημιουργία πλέγματος",
                JOptionPane.PLAIN_MESSAGE);

int rowsnum = Integer.parseInt(rows); 
int colsnum = Integer.parseInt(cols);
GridCell gridCell[][] = new GridCell[rowsnum][colsnum];

public Map()
{
        super();

    setLayout(new GridLayout(rowsnum,colsnum)); 
    for(int i=0;i<rowsnum;i++){ 
        for(int j=0;j<colsnum;j++){
           gridCell[i][j] = new GridCell();
           gridCell[i][j].setPosition(new Point(i,j));
           add(gridCell[i][j]);
        }
    }
}

私は新しいメソッドで入力をチェックしようとしましたが、私の問題は、プログラムの他のクラスにアクセスする必要があることですrowsnumcolsnumgridcell[]

私はJavaが初めてで、助けていただければ幸いです。:-)

4

3 に答える 3

1

現在、rowsnum、colsnum、GridCells は「Map」クラス内の変数です。

これを他のクラスからインスタンス変数としてアクセスするには、

public int rowsnum = // something
public int colsnum = // something
public GridCell girdCell[][] = //something

「パブリック」は、変数がクラス外からアクセスできることを意味します。

そしてあなたのMapクラスの外で、

Map m = new Map();
int rowsnum = m.rowsnum
int colsnum = m.colsnum
// access instance variables

ただし、インスタンス変数のゲッターとセッターを作成することをお勧めします。

つまり、これらの変数を取得および設定するための個別のメソッドを作成します。

public int getRowsNum() {
    return rowsnum;
}

など。

于 2013-10-08T09:29:14.563 に答える
1

Mapクラスオブジェクトを介してそれらにアクセスできます(アクセス修飾子をそれらの変数のパブリックに変更します)

例:クラスBで

public class Test {
    public static void  main(String args[]){
        Map someMap = new Map();

        //Access gridCell 
        someMap.gridCell;

        //Access rowsnum
        someMap.rowsnum;

        //Access colsnum
        someMap.colsnum;
    }
}

または、それらを静的にして、クラス名でアクセスすることもできます

例: Map.rowsnum;

于 2013-10-08T09:31:42.110 に答える