Я создаю 3 вещи прямо сейчас; драйвер, класс и исключение.My Exception не работает
В настоящее время возникают проблемы с моим классом книжного магазина, признающим исключения в моем классе книг.
Что я делаю неправильно?
Driver: под редакцией данного предложения по @Satoshi Kouno
import java.io.*;
import java.util.*;
public class BookStore{
public static void main(String arg[ ]) throws Exception{
Scanner sc = new Scanner(System.in);
int isbn=0;
int quantity = 0;
String title = "";
Book oneBook;
boolean exit = false;
List<Book> bookList = new ArrayList<Book>(); //here
while(true){
try{
sc = new Scanner(System.in);
System.out.print("Enter title: ");
title = sc.nextLine();
System.out.println();
System.out.print("Enter isbn: ");
isbn = sc.nextInt();
System.out.println();
System.out.print("Enter quantity: ");
quantity = sc.nextInt();
System.out.println();
// Validation Codes
// Condition
if(isbn !=0 && quantity != 0 && !"".equals(title))
{
oneBook = new Book(title, isbn, quantity);
bookList.add(oneBook); //create a list in main
System.out.println("Book added in the list.");
}
else
{
System.out.println("Book not added");
break;
}
}
catch(InputMismatchException ime){
System.out.println("you did not enter a number");
}
catch (BookException be){
System.out.println(be.getMessage()); //
}
}
for(int i = bookList.size()-1; i >= 0; i--){
System.out.println(bookList.get(i));
}
} //main method
} //class
Класс:
public class Book{
//instance variables
private String title = "";
private int isbn;
private int quantity;
public Book (String title, int isbn, int quantity)throws Exception{
//constructors
setTitle(title);
setIsbn(isbn);
setQuantity(quantity);
}
public String toString(){ //toString Method
String s = "";
s = s + "Title: " + this.title + "\nISBN: " + this.isbn + "\nQuantity: " + this.quantity + "\n";
return s;
}
public String getTitle(){
return this.title;
}
public int getisbn(){
return this.isbn;
}
public int getquantity(){
return this.quantity;
}
//mutator methods
public void setTitle(String newtitle)throws BookException{
if(newtitle.length()<1){
BookException be = new BookException();
be.setMessage("Title cannot be blank");
throw be;
}
else{
this.title=newtitle;
}
}
public void setIsbn(int newisbn)throws BookException{
if (isbn <= 1000 || isbn >= 10000) {
this.isbn = newisbn;
}
else{
BookException be = new BookException();
be.setMessage("ISBN should be between 1000 and 10000.");
throw be;
}
}
public void setQuantity(int newquantity)throws BookException{
if(newquantity>=0){
this.quantity = newquantity;
}
else{
BookException be = new BookException();
be.setMessage("Quantity can't be a negative number.");
throw be;
}
}
}
И мой класс исключения: отредактирован # 2
public class BookException extends Exception {
//instance variable
private String message = "";
public BookException(String message) {
super(message);
}
public void setMessage(String newMessage) {
this.message = newMessage;
}
public String getMessage() {
return this.message;
}
} Попытка заставить мой класс работать с моим драйвером, но он не работает.
EDIT !! PSA я забыл указать требования моего класса драйвера
- Прочитайте название книги от пользователя
- Читать книгу ISBN от пользователя
- Прочитайте книгу в складе количестве от пользователя
- Ваша программа должна продолжать читать информацию о книге от пользователя до тех пор, пока все записи от пользователя для всех полей не будут пустыми или нулевыми.
- Ваша программа будет хранить действительные объекты книги в ArrayList (только действительные объекты)
- Ваша программа затем распечатает список всех «действительных» книг, введенных пользователем в обратном порядке, в котором были введены книги.
- Когда пользователь вводит информацию, программа должна давать обратную связь, например, сообщать, что элемент был добавлен в ArrayList или сообщается о найденных ошибках.
мои книги и класс исключения не нужны изменения уже
они просто хотят, чтобы я сделал свой собственный драйвер для работы с ними обоими и их исключения
Что делать вы подразумеваете «признание исключений»? –
У вас не должно быть сеттера для сообщения: передайте сообщение как параметр конструктора, чтобы вы написали 'throw new BookException (« Quantity ... »)'; вы вызываете 'super (message)' в свой конструктор, который теперь принимает параметр String. –
Вы выбрали это исключение из метода setTitle, но я не вижу никаких вызовов. Я пропустил это? – duffymo