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

6

更新3:我找到了。

options[i].revmdp(route+dirrections[i],num);

在这里,您正在对数组和字符串进行字符串连接。这会导致设置route[num]此 concat 结果的递归级别。

于 2013-10-23T14:42:45.093 回答
0

每个 Java 类都从Object实现默认toString()方法的类中继承。默认 toString()方法的源代码如下所示:

public String toString() {

        return getClass().getName() + "@" + Integer.toHexString(hashCode());

    }

如果不覆盖默认的 toString() 方法,则调用上述方法。

于 2013-10-23T14:42:27.310 回答