如何在.toString方法中返回一个数组

时间:2016-08-25 17:31:18

标签: java arrays class methods return

如何在.toString类的Shelf方法中返回数组?

public class Book 
{
    int wys, szer;
    String imie, tytul;

public Book(int wys, int szer, String imie, String tytul)
    {
        this.wys = wys;
        this.szer = szer;
        this.imie = imie;
        this.tytul = tytul;
    }

@Override
public String toString()
{
    return imie;
}

}





public class Shelf
{


int wys;
    private Book book[] = new Book[20];


public Shelf(Book[] ks, int j)
{
    for (int i = 0; i < ks.length - 1; i++)
    {

        this.book[i] = ks[i];

    }
}

@Override
public String toString()
{
    for (int i=0;i<book.length;i++)
    {
    return book[i].toString();
    }

}


}
  

主要课程

public class Test
{

public static void main(String[] args)
{
Book ks[]={ 
            new Book (13,2, "Rhonda Byrne", "Sekret"), 
            new Book(12, 1, "Graham Greene", "Monsignore Kichote"),
            new Book(19, 3, "Hugo Steinhaus", "Slownik racjonalny"),
            new Book(10, 4, "RE.M. Remarque", "Trzej towarzysze"), 
            new Book(13, 3, "A.A. Milne", "Kubus Puchatek"),
            new Book(11, 4, "Paulo Coelho", "El Aquimista"), 
            new Book(13, 5, "Mitch Albom", "Tuesday with Morrie"),
            new Book(11, 2, "John Fowles", "Mag"), 
           };

    Shelf s = new Shelf(ks, 15);
    System.out.println(s);
}

}

如果return语句在循环中,则不希望编译。

如果我以这种方式返回,它将编译:

return book[0].toString+book[1].toString... etc....  

但如何自动完成?

---&gt;我更新了一个类的所有代码。

4 个答案:

答案 0 :(得分:1)

Arrays实用程序类有一个从数组创建字符串的方法。

return Arrays.toString(book);

答案 1 :(得分:0)

public String toString()

所以你必须返回一个字符串。

我建议您使用A class Nested1: @classmethod def from_json(json): self.nested2=Nested2.from_json(json.nested2) 并在循环中附加到它。

StringBuilder

由于初始化数组的方式

,您将获得NullPointerException
  public String toString()
{
    StringBuilder sb =new StringBuilder();

    for (int i=0;i<book.length;i++)
    {
        sb.append(book[i].toString());
    }
    return sb.toString();
}

将其更改为:

private Book book[] = new Book[20];

答案 2 :(得分:0)

也许在循环中调用方法? 然后你需要一个参数,你可以在数组的每个元素上使用该方法。

for (int i=0; i<book.length; i++) {

    toString(int i);

}

方法:

public String toString(int i) {

    return book[i].toString();

}

不好,但也许有帮助。

答案 3 :(得分:0)

这个时代,我会建议这样的事情:

@Override
    public String toString() {
        return Arrays.stream(book).map(Book::toString)
                .collect(Collectors.joining(", "));
    }