这是我的完整代码。我意识到它还没有完成,但我遇到了ISBN参数部分的问题。当我编译时,它说“不兼容的类型”突出显示'返回'不正确的ISBN“;'
class Book{
private String title;
private int ISBN;
private String authorLastName;
private String authorFirstName;
private int yearPublished;
public Book(){
}
public Book(String newTitle, int newISBN, String newAuthorLastName,
String newAuthorFirstName, int newYearPublished){
title = newTitle;
ISBN = newISBN;
authorLastName = newAuthorLastName;
authorFirstName = newAuthorFirstName;
yearPublished = newYearPublished;
}
public String setTitle(String newTitle){
if(title.length()> 3){
return title;
}else{
return "Title too short.";
}
}
public int setISBN(int newISBN){
if((newISBN>=10000) &&(newISBN<=20000)){
return ISBN;
}else{
return "Incorrect ISBN";
}
}
}
如果你们能,我会非常感激!
答案 0 :(得分:3)
public int setISBN(int newISBN){
表示该方法返回int
的数据类型。当你这样写:
return "Incorrect ISBN";
您尝试返回String
。你不能这样做。你有返回一个整数。
您可能想要做的是返回一个负数,如果它不正确并打印出错误的信息。这样,您就知道不要使用无效的号码,但仍会返回int
。
像这样,例如:
public int setISBN(int newISBN){
if((newISBN>=10000) &&(newISBN<=20000)){
return ISBN;
}else{
System.out.println("Incorrect ISBN"); // print out that it's invalid
return -1; // should be known that -1 means it's invalid
}
}
请注意,您的set
方法没有意义。 set
方法将字段设置为特定值。当您返回某些内容时,应将其称为get
方法。
答案 1 :(得分:1)
您在以下方法中返回了错误的值(即String
)。
public int setISBN(int newISBN){
if((newISBN>=10000) &&(newISBN<=20000)){
return ISBN;
}else{
return "Incorrect ISBN"; // Wrong
}
}
返回int
而不是String
public int setISBN(int newISBN){
if((newISBN>=10000) &&(newISBN<=20000)){
return ISBN;
}else{
return newISBN;
}
}
答案 2 :(得分:0)
嗯,你的函数被声明为返回一个int
,但它返回一个字符串。这是一种类型不匹配。
你可以通过使用特殊标志值来解决这个问题,因为&#34;不正确&#34;,比如-1或者其他东西:
public int setISBN(int newISBN){
if((newISBN>=10000) &&(newISBN<=20000)){
return ISBN;
}else{
return -1; // or whatever
}
}
但是,我注意到您正在使用setISBN()
之类的验证功能。我建议将其更改为返回boolean
并重命名:
public boolean isValidIsbn(int newIsbn){
return ((newIsbn>=10000) &&(newIsbn<=20000));
}
如果ISBN有效,则返回true
&#34; (根据您的定义)和false
如果不是。
答案 3 :(得分:0)
问题出在这里:
public int setISBN(int newISBN){
if((newISBN>=10000) &&(newISBN<=20000)){
return ISBN;
}else{
return "Incorrect ISBN"; // must be int
}
}
您正在返回String
,即"Incorrect ISBN"
&amp;功能return type
为int
。
因此,返回独特的somwthinh,以确定ISBN
值不在10000 to 20000
之间,假设返回0
&amp;检查那里的值是否为0
。如果您将返回类型设置为boolean
,则更好。所以它会:
public boolean setISBN(int newISBN){
if((newISBN>=10000) &&(newISBN<=20000)){
return true;
}else{
return false;
}
}