我已经创建了这个方法,但我不确定为什么它会说缺少返回语句。我需要将打印更改为退货吗? (这是最底层的方法)我是一个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);
}
}
}
}
答案 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>
但如果你没有返回任何东西,那么你就是在反对你自己的方法,你自己的合同,这是编译器抱怨的充分理由......
结论:
请记住定义方法的信息。