【问题标题】:How do I add more than one return statement inside a method?如何在方法中添加多个返回语句?
【发布时间】:2015-03-07 15:22:28
【问题描述】:

我正在尝试使用gettersetter 方法返回一些对象的一些值。现在我不能在一个方法中返回多个值。在这种情况下,我需要为每个return.创建不同的方法吗?如果没有,我该如何解决?

我的代码:

    package books;

public class BooksObject {
    //variable for book 1

    String name1 = "The brief history of time";
    String isbn1 = "111";
    String[] authName1 = {"S. Hawking", " Hawking's friend"};

//variable for book 2
    String name2 = "100 years of solitude";
    String isbn2 = "222";
    String[] authName2 = {"G. Marquez", "Marquezs friend"};

    //All setters
    public void setBook1(String n_1, String i_1, String[] a_N1) {
        name1 = n_1;
        isbn1 = i_1;

        String[] authName1 = a_N1;
    }

    public void setBook2(String n_2, String i_2, String[] a_N2) {
        name2 = n_2;
        isbn2 = i_2;

        String[] authName2 = a_N2;
    }

    //All getters method
    public String getBook1() {
        return name1;

        //return isbn1; //shows error
        //return String[]authName1;//Shows error
    }

}

[注意:我当然会在我的主类中调用所有这些方法。我只是没有在这里发布。]

【问题讨论】:

  • 如果您希望 single method 返回多个值。然后将方法类型设置为 Array,然后将这些多个值存储在该 array 对象中返回......
  • 请查找“对象”,它可能会帮助您将价值观组合在一起。
  • 锋利的边缘,不知道如何使方法类型成为数组!

标签: java arrays object return return-value


【解决方案1】:

您应该创建一个包含 3 个属性的 Book 类,并且您的 getter 将返回一个 Book 实例。

代替

String name1 = "The brief history of time";
String isbn1 = "111";
String[] authName1 = {"S. Hawking", " Hawking's friend"};

你会有

Book book1 = new Book ("The brief history of time", "111", {"S. Hawking", " Hawking's friend"});

然后:

public Book getBook1() {
    return book1;
}

您可以通过拥有一个书籍数组 (Book[]) 而不是为每本书籍使用不同的变量来进一步改进您的 BooksObject。这样您就不需要为每本书单独使用 getBooki 方法了。

【讨论】:

    【解决方案2】:

    我认为你应该改变你的代码,如下所示:

    public class Book
    {
        private String name;
    
        private String isbn;
    
        private String[] authors;
    
        /* constructor */
    
        public Book(String name, String isbn, String[] authors) {
            this.name = name;
            this.isbn = isbn;
            this.authors = authors;
        }
    
        /* setter */
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setIsbn(String isbn) {
            this.isbn = isbn;
        }
    
        public void setAuthors(String[] authors) {
            this.authors = authors;
        }
    
        /* getter */
    
        public String getName() {
            return name;
        }
    
        public String getIsbn() {
            return isbn;
        }
    
        public String[] getAuthors() {
            return authors;
        }
    }
    
    
    
    public class Main
    {
        public static void main(String[] args) {
            Book book1 = new Book(
                "The brief history of time",
                "111",
                new String[]{"S. Hawking", " Hawking's friend"}
            );
            Book book2 = new Book(
                "100 years of solitude",
                "222",
                new String[]{"G. Marquez", "Marquezs friend"}
            );
        }
    }
    

    【讨论】:

    • 谢谢,这就是我想要的。它完全回答了我的问题。
    • 不幸的是,我发现它不起作用。尽管我用每个 book 对象调用了每个方法,但没有打印出任何结果或值。
    • “没有结果或值被打印出来”是什么意思?如果要打印属性,则必须将其中一个 getter 函数与 println() 方法一起使用。在main函数中,两本书声明后,如果你想打印第一本书的名字,只需写System.out.println(book1.getName());,如果你对第二本书的isbn代码感兴趣,则写System.out.println(book2.getIsbn());,依此类推。
    • 对不起对不起!不要介意我之前的评论,忽略它。过了一会儿我才弄明白。很好,可以工作。实际上我忘记了打印对象属性的方法。我也有点压力。
    • 别担心,最重要的是你找到了你要找的东西。
    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多