Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java打印字符串提供指针编号_Java_String_Pointers_Printing_Pathing - Fatal编程技术网

java打印字符串提供指针编号

java打印字符串提供指针编号,java,string,pointers,printing,pathing,Java,String,Pointers,Printing,Pathing,我正在用java开发一个特殊的寻路系统,它需要在一个点上打印它的路径。虽然还远没有完成,但我遇到了一个问题。当我运行代码时,它会打印指向字符串的指针,而不是字符串本身。代码如下: public class node { int optionnum; node[] options; String[] dirrections; String[] route; boolean[] visited; public node(){ o

我正在用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);
        }
    }
}
  }
正如您在path的构造函数中所看到的,我已经将路径设置为字符串“”(空字符串)。由于该字符串在调用该代码时还没有进一步更改,我希望它返回“”,但它会给出这些奇怪的字符串指针。有人知道怎么回事吗


注意,我已经尝试调用路由[0][0],但java不允许这样做

每个Java类都来自类
对象
,该对象实现了默认的
toString()
方法。该方法的源代码如下所示:

public String toString() {

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

    }

如果不重写默认的toString()方法,则会调用上面的方法。

每个Java类都会从类
对象中删除,该对象实现默认的
toString()方法。该方法的源代码如下所示:

public String toString() {

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

    }

如果不重写默认的toString()方法,则调用上面的方法。

更新3:我找到了它

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

这里是对数组和字符串进行字符串连接。这导致将递归级别中的
route[num]
设置为此concat结果。

更新3:我找到了它

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


这里是对数组和字符串进行字符串连接。这会导致将
route[num]
设置为该concat结果的递归级别。

如何声明
route
请遵循命名约定。@Thijser实际上
Object[]route=新字符串[50]
是完全合法的java。您没有向我们显示路由的声明,只显示赋值/初始化。选项[i]。路由[0]由于某种原因是字符串数组。此代码无法编译。
options[i]处出错。revmdp(directions[i],num)
因为
revmdp
接受一个
int
参数。请发布您的实际代码,因为您描述的输出不能由您发布的代码生成。
route
是如何声明的?请遵循命名约定。@Thijser实际
Object[]route=new String[50]
是完全合法的java。您没有向我们显示路由的声明,只显示赋值/初始化。选项[i]。路由[0]由于某种原因是字符串数组。此代码无法编译。
options[i]处出错。revmdp(directions[i],num)
因为
revmdp
接受一个
int
参数。请发布您的实际代码,因为您描述的输出不能由您发布的代码生成。但是如果实际对象是
字符串
,则
toString()
已被覆盖。但是如果实际对象是
字符串
,则
toString()
已被覆盖。有趣的是,如果您回顾一次编辑,那么这个答案就不对了。查看revmdp()的标题,返回一次编辑。@MohammadS。这就是为什么他现在发现了问题,而不是一个编辑回来:)。直到本次编辑之前,这是无法回答的。是的,我假设在调用revmdp()之前打印错误,结果证明递归调用确实有问题…@Thijser问题不在于递归调用。问题是,您试图在数组和字符串之间设置“+”。是的,但如果没有考虑到第一次调用正常,而下一次调用失败,则会出现递归问题。有趣的是,如果您回顾一次编辑,则此答案不正确。查看revmdp()的标题,返回一次编辑。@MohammadS。这就是为什么他现在发现了问题,而不是一个编辑回来:)。直到本次编辑之前,这是无法回答的。是的,我假设在调用revmdp()之前打印错误,结果证明递归调用确实有问题…@Thijser问题不在于递归调用。问题是您试图在数组和字符串之间设置“+”。是的,但如果没有考虑到第一次调用正常,而下一次调用失败,则会出现递归问题。