你好,我写了代码,其中它使用 setter 方法获取书籍详细信息并使用 getter 方法显示详细信息。当用户输入输入时,它必须输入三个详细信息。
书名 书价
作者姓名
我想检查用户是否在书价中给出了任何负值或零值。
我该怎么做?下面是代码。我正在练习封装问题
//Book.java file
class Book
{
private String bookName;
private int bookPrice;
private String authorName;
public String getBookName()
{
return bookName;
}
public int getBookPrice()
{
return bookPrice;
}
public String getAuthorName()
{
return authorName;
}
public void setBookName(String a)
{
bookName=a;
}
public void setBookPrice(int b)
{
bookPrice=b;
}
public void setAuthorName(String c)
{
authorName=c;
}
}
//TestBook.java file
import java.util.*;
class TestBook
{
public static void main(String args[])
{
Book bobj = new Book();
Scanner sc = new Scanner(System.in);
try
{
System.out.println("Enter the Book name:");
bobj.setBookName(sc.nextLine());
System.out.println("Enter the price:");
bobj.setBookPrice(sc.nextInt());
sc.nextLine();
System.out.println("Enter the Author name:");
bobj.setAuthorName(sc.nextLine());
System.out.println();
System.out.println("Book Details");
System.out.println("Book Name :"+bobj.getBookName());
System.out.println("Book Price :"+bobj.getBookPrice());//should not be -ve or 0
System.out.println("Author Name :"+bobj.getAuthorName());
}
catch(Exception e)
{
System.out.println("Invalid Input");
}
}
}
您应该将此检查放在 setter 方法中以检查它是否大于零。例如:
public void setBookPrice(int b)
{
if(b>0)
bookPrice=b;
else
{
throw new IllegalArgumentException("b must be positive")
}
}
上面的代码将防止设置负价格和零价格。您可以将异常引发代码替换为自己的处理。
如果您正在练习封装,我建议为价格创建一个特定的验证方法,以便无需更改公共接口即可轻松修改。
public boolean isValidPrice() {
return bookPrice > 0;
}
现在可以检查
if (!bobj.isValidPrice()) {
//error handling
}
如果价格的验证规则会改变,调用代码将保持不变