Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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 从另一个类调用toString方法_Java_Arrays_Arraylist_Tostring - Fatal编程技术网

Java 从另一个类调用toString方法

Java 从另一个类调用toString方法,java,arrays,arraylist,tostring,Java,Arrays,Arraylist,Tostring,下面是我的toString()方法,在该方法中,我试图从另一个名为Tree的类调用另一个toString()。我试图返回ArrayList的每个部分,并将其从树类格式化为toString(),然后将其全部放入“result”字符串 到目前为止,我的方法所做的只是遍历列表,而不返回任何内容。如何使其实质上将整个列表放入结果字符串中,格式为myTree类中的mytoString() public String toString(){ String result;

下面是我的
toString()
方法,在该方法中,我试图从另一个名为
Tree
的类调用另一个
toString()
。我试图返回
ArrayList
的每个部分,并将其从
类格式化为
toString()
,然后将其全部放入“result”
字符串

到目前为止,我的方法所做的只是遍历列表,而不返回任何内容。如何使其实质上将整个列表放入结果字符串中,格式为my
Tree
类中的my
toString()

   public String toString(){
        String result;
        int i = 0;
        while(i < listOfTrees.size()){
            listOfTrees.get(i);
            i++;
    }
公共字符串toString(){
字符串结果;
int i=0;
而(i
使用StringBuilder:

   public String toString(){
        StringBuilder result = new StringBuilder();
        int i = 0;
        while(i < listOfTrees.size()){
            result.append(listOfTrees.get(i) + " "); // this would use the toString
                                                     // method of the type contained
                                                     // in this List
            i++;
        }
        return result.toString();
   }
公共字符串toString(){
StringBuilder结果=新建StringBuilder();
int i=0;
而(i
您需要使用
StringBuilder
。获取每个
字符串
将其附加到生成器,然后返回它生成的最终
字符串

   public String toString(){
        StringBuilder str= new StringBuilder();
        for(int i = 0; i < listOfTrees.size(); i++){
            str.append(listOfTrees.get(i));
        }
        return str.toString();
    }
公共字符串toString(){
StringBuilder str=新的StringBuilder();
for(int i=0;i

另一种方法是用一个空的
字符串开始初始化
结果
,然后使用
+
操作符向其中添加其他
字符串
,但这是非常低效的,因为
字符串
是不可变的,每次这样添加
字符串
,都会创建一个全新的o对象。

a)您发布的代码不会编译;b)您永远不会返回
字符串(您在方法签名中声明的字符串)和c)您从不将
树的值添加到
字符串中以返回。谢谢,我认为这会起作用,您知道没有StringBuilder是否有办法做到这一点吗?因为我还没有了解those@CodyTimmer您可以使用字符串执行。如果结果是字符串,则可以将循环更改为
result+=listOfTrees.get(i)+“”
。这将返回一个新字符串,该字符串除包含添加的字符串外,还包含原始字符串。是的,这就是我正在做的,使用另一个tostring方法格式化每个字符串将导致+=listOfTrees.get(i).tostring工作?@CodyTimmer是的,如果您没有忘记
()
在方法调用中,但它会附加所有没有分隔符的元素,这将不太可读。在我的tostring方法中,我在结尾有一个\t,用一个选项卡将它们隔开。不幸的是,在我的类中,我还没有了解StringBuilder,所以我相信我必须按照您所说的那样做,创建第二个字符串并保留ad把它和我的结果联系起来String@CodyTimmer你可以使用+=是的,你不需要两个变量来做这件事,只要在循环中使用
result+=listOfTrees.get(i);
。是的,这就是我正在做的,用我的另一个tostring方法格式化每个变量将导致+=listOfTrees.get(i)。tostring工作?是的,但即使你不调用
tostring()
方法,当您使用
+=
运算符时,它将隐式地为您调用。