2014-10-01 98 views
-2

这是我的代码完整。我意识到它没有完成,但我有问题的ISBN参数部分。当我编译时,它说“不兼容类型”突出显示“返回”不正确的ISBN“;”需要帮助 - 使用int和String的Java if/else语句

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"; 
     } 
    }  
} 

如果你们能我将不胜感激!

+2

你知道什么返回类型和return语句是谁? – 2014-10-01 03:36:10

+4

为什么你的'set'方法没有设置任何东西? – SLaks 2014-10-01 03:37:06

回答

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方法没有意义。 A set方法将字段设置为某个值。当你返回一些东西时,它应该被称为get方法。

0

那么,你的函数声明返回一个int但它返回一个字符串。这是一种类型不匹配。

您可以通过使用一个特殊的标志值“不正确”解决这个问题,像-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)); 
} 

这将返回true如果ISBN是“有效”(由您定义)和false如果事实并非如此。

0

问题是在这里:

public int setISBN(int newISBN){  
     if((newISBN>=10000) &&(newISBN<=20000)){ 
      return ISBN; 
     }else{ 
      return "Incorrect ISBN"; // must be int 
     } 
} 

你正在返回的功能String"Incorrect ISBN" & return typeint

所以返回somwthinh就是独特之处在于LL识别ISBN值不10000 to 20000之间,假设回报0 &检查有没有价值0与否。或者更好,如果你使返回类型为boolean。所以它会是:

public boolean setISBN(int newISBN){  
     if((newISBN>=10000) &&(newISBN<=20000)){ 
      return true; 
     }else{ 
      return false; 
     } 
} 
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; 
    } 
}