缺少return语句方法ReturnCopy

时间:2016-03-02 19:55:50

标签: java

我已经创建了这个方法,但我不确定为什么它会说缺少返回语句。我需要将打印更改为退货吗? (这是最底层的方法)我是一个Java初学者,所以任何帮助将不胜感激!

public class Book {
private String title;
private String author;
private int copies;
private boolean borrowed;


public Book( String inAuthor, String inTitle, int inNumberOfCopies ) {
    this.author = inAuthor;
    this.title = inAuthor;
    this.copies = inNumberOfCopies;

}

 public void borrowed() {
    borrowed = true;
}

public void rented() {
    borrowed = true;
}

public void returned() {
    borrowed = false;
}

public boolean isBorrowed() {
    return borrowed;
}

public String getAuthor() {
    return this.author;

}

public static String getTitle() {
    return getTitle();

}

public int getTotalCopies() {
    return this.copies;

}

public int getAvailableCopies() {

}

public void withdrawCopy() {
        int found = 0;
for (Book b : Library.getListOfBooks()) {
    if (b.getTitle().equals(title)) {
       if (found == 0) {
        found = 1;
    }
    if (!b.isBorrowed()) {
        b.borrowed=true;
        found = 2;
        break;      
        }
     if (found == 0) {
        System.out.println("Sorry, this book is not in our catalog.");
    } else if (found == 1) {
        System.out.println("Sorry, this book is already borrowed.");
    } else if (found == 2) {
        System.out.println("You successfully borrowed " + title);
    }
    }

    }

}

public String returnCopy() {
    boolean found = false;
    for (Book book : Library.getListOfBooks()) {
        if (getTitle().equals(title) && book.isBorrowed()) {
            book.returned();
            found = true;
        }
        if (found) {
        System.out.println("you successfully returned " + title);
    }
    }
}
}

3 个答案:

答案 0 :(得分:1)

public String returnCopy()
String之后

public表示此方法将返回String。 您的public String returnCopy()目前没有返回任何内容。

如果您不想退回任何内容,可以使用void,如下所示:

public void returnCopy(){
    // code
}

public int getAvailableCopies()相同的问题,这应该返回int,但您没有返回任何内容。

小心:

这种方法:

public static String getTitle() {
    return getTitle();
}

是没有基本条件的递归方法。这将导致错误并强制您的应用程序崩溃。

答案 1 :(得分:0)

您已将方法定义为返回String,但您不会在方法正文中的任何位置返回值。最简单的修复可能是将返回类型更改为void ...

public void returnCopy() {...

}

答案 2 :(得分:0)

以上所有答案都指向同一个问题,你已经定义了违反合同的方法。

在你的代码中你也有这样的东西:

public int getAvailableCopies() {

}

所以你告诉编译器,你有一个名为 getAvailableCopies 的方法,它需要没有参数返回一个整数。< / p>

但如果你没有返回任何东西,那么你就是在反对你自己的方法,你自己的合同,这是编译器抱怨的充分理由......

结论:

请记住定义方法的信息。