【问题标题】:how can I return a String?我怎样才能返回一个字符串?
【发布时间】:2015-04-13 19:51:32
【问题描述】:
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 类的情况下执行此操作。我知道我需要使用字符串来转换值。但我不知道如何用它来捕捉返回值。有人可以为我指出如何将此输出转换为字符串值的正确方向吗?

【问题讨论】:

    标签: java string return


    【解决方案1】:

    您需要覆盖 Book 类的 toString() 方法。在这个类中,您可以根据需要生成一个字符串。示例:

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

    【讨论】:

      【解决方案2】:

      您需要在 BookFiction 类中覆盖 toString() 方法。该方法实际上是在Object 类中声明的,所有类都从该类继承。

      @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)。

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

      例如:

      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.
          }
      }
      

      【讨论】:

      • 我如何引用变量,因为它们是一个参数,并不是所有的都是继承的。比如作者。
      • 您需要将它们存储在构造函数的成员变量中。
      【解决方案3】:

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

      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 类中。

      【讨论】:

        【解决方案4】:

        需要给你的对象 Book 一个 ToString() 覆盖。

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

        例子:

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

        其中name,是Class中的一个字符串。

        【讨论】:

        • 展示你的尝试。您可能与签名不匹配。使用 @Override 注释来防止这个问题。
        • 哇,对正确答案投了反对票……好吧。正如 Kon 所说,发布无效的内容,我们可以为您提供帮助。
        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多