我怎么能返回一个字符串?

时间:2015-02-12 21:38:53

标签: java string return

package book1;
import java.util.ArrayList;


public abstract class Book  {
    public String Book (String name, String ref_num, int owned_copies, int     loaned_copies ){
    return;

    }
}

class Fiction extends Book{
    public Fiction(String name, String ref_num, int owned_copies, String author) {

            }

        }

当我将值输入变量参数并使用它调用它们时

public static class BookTest {
    public static void main(String[] args) {
        ArrayList<Book> library = new ArrayList<Book>();
        library.add(new Fiction("The Saga of An Aga","F001",3,"A.Stove"));
        library.add(new Fiction("Dangerous Cliffs","F002",4,"Eileen Dover"));


        for (Book b: library) System.out.println(b);
        System.out.println();


    }
}

我得到了这个的返回值:

book1.Fiction@15db9742
book1.Fiction@6d06d69c
book1.NonFiction@7852e922
book1.ReferenceBook@4e25154f

如何转换类以返回字符串值而不是对象值?我需要在不更改BookTest类的情况下执行此操作。我知道我需要使用字符串来转换值。但我不知道如何用它来获取回报价值。有人可以指出我如何将此输出转换为字符串值的正确方向?

5 个答案:

答案 0 :(得分:2)

您需要覆盖toString()Book课程中的Fiction方法。该方法实际上是在Object类中声明的,所有类都继承自。{/ p>

@Override
public String toString(){
    return ""; // Replace this String with the variables or String literals that you want to return and print.
}

System.out.println()System.out.print()在接收参数中的对象时调用此方法(而不是基元,例如intfloat)。< / p>

要引用方法中的变量,您需要在类中声明它们并通过类的构造函数存储它们。

例如:

public abstract class Book {
    private String name;
    private String reference;
    private int ownedCopies;
    private int loanedCopies;

    public Book (String name, String reference, int ownedCopies, int loanedCopies) {
        this.name = name;
        this.reference = reference;
        this.ownedCopies = ownedCopies;
        this.loanedCopies = loanedCopies;
    }

    @Override
    public String toString(){
        return name + ", Ref:" + reference + ", OwnedCopies: " + ownedCopies + ", LoanedCopies: " + loanedCopies; // Replace this String with the variables or String literals that you want to return and print.
    }
}

答案 1 :(得分:2)

您需要覆盖Book类的toString()方法。在这个类中,您可以根据需要生成String。例如:

@Override
public String toString() {
  StringBuilder sb = new StringBuilder();
  sb.append(this.author).append(": ").append(this.title);
  return sb.toString();
}

答案 2 :(得分:1)

您定义的课程,不存储任何值。换句话说,构建一本新书很有用。您需要提供字段:

public abstract class Book {

    private String name;
    private String ref_num;
    private int owned_copies;
    private int loaned_copies;

    public String Book (String name, String ref_num, int owned_copies, int loaned_copies) {
        this.name = name;
        this.ref_num = ref_num;
        this.owned_copies = owned_copies;
        this.loaned_copies = loaned_copies;
    }

    public String getName () {
        return name;
    }

    //other getters

}

现在一个对象基本上是一组字段。如果要打印某些内容,可以访问并打印其中一个字段,例如:

for (Book b: library) System.out.println(b.getName());

在Java中,您还可以通过覆盖 toString方法提供打印对象的默认方式:

@Override
public String toString () {
    return ref_num+" "+name;
}

Book班。

答案 3 :(得分:0)

需要为您的对象提供一个ToString()覆盖。

http://www.javapractices.com/topic/TopicAction.do?Id=55

示例:

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

其中name是Class中的字符串。

答案 4 :(得分:0)

我希望您已将传递的参数分配给类的某些属性。现在,完成后,您可以覆盖Book中的toString()方法以返回自定义字符串进行打印。