0

私は、ある時点でそのパスを出力する必要がある、Java の特別なパスファインディング システムに取り組んでいます。完成にはほど遠いですが、問題が発生しました。コードを実行すると、文字列自体ではなく、文字列へのポインターが出力されます。コードは次のとおりです。

public class node {
    int optionnum;
    node[] options;
    String[] dirrections; 
    String[] route; 
    boolean[] visited; 

    public node(){
        options= new node[4];
        dirrections= new String[4];
        route= new String[50];
        for (int i=0;i<50;i++){
            route[i]="";
        }
        visited= new boolean[50];
    }
    public void revmdp(int num){

        visited[num]=true;
        for(int i=0;i<optionnum;i++){
            System.out.println(options[i].route[0]); //how can this be a pointer?
            options[i].revmdp(dirrections[i],num);
    }
public void revmdp(String nroute, int num){
    //System.out.println(route[0]+dirrections[0]);
    if (!visited[num]||nroute.length()<route[num].length()){
        route[num]=nroute;
        visited[num]=true;
        for(int i=0;i<optionnum;i++){
            options[i].revmdp(route+dirrections[i],num);
        }
    }
}
  }

出力は次のようになります

[Ljava.lang.String;@2d66a22b3;

パスのコンストラクターでわかるように、文字列 "" (空の文字列) へのパスを既に設定しています。このコードが呼び出された時点では文字列はまだ変更されていないため、「」が返されると予想されますが、代わりにこれらの奇妙な文字列ポインターが返されます。何が起きているか知っている人はいますか?

すでに route[0][0] を呼び出そうとしましたが、Java はそれを許可しないことに注意してください。

4

2 に答える 2