package bookShop;
import java.util.ArrayList;
import java.util.Scanner;
/**
* Created by luigi on 4/1/2016.
*/
public class Book{
private String bTitle;
private Double bPrice;
private int bYear;
private int bStock;
private String mTitle;
private Double mPrice;
private int mYear;
private int mWeek;
private int pick;
static ArrayList<Book> BookList = new ArrayList<Book>();
static Scanner input = new Scanner(System.in);
static Scanner pickInput = new Scanner(System.in);
static Scanner pickBook = new Scanner(System.in);
public void createBook(){
System.out.println("Enter a Title: ");
bTitle = input.nextLine();
System.out.println("Enter the Price: ");
bPrice = input.nextDouble();
System.out.println("Enter the publication Year: ");
bYear = input.nextInt();
System.out.println("Enter the amount of stock: ");
bStock = input.nextInt();
}
public void addBook(){
Book newBook = new Book();
newBook.createBook();
BookList.add(newBook);
}
public void printMenu() {
System.out.println("Welcome to your personal Book-Shop library program.");
System.out.println("Type the number of the menu you want to use.");
System.out.println("1: Check the books in the list.");
System.out.println("2: Add a book to the list");
System.out.println("3: Delete stock.");
System.out.println("0: Exit the menu.");
pick = pickInput.nextInt();
}
public void deleteStock(){
printBookList();
System.out.println("Type the index of the book you want to remove: ");
int stockChoice = (pickBook.nextInt()-1);
BookList.remove(stockChoice);
//BookList.remove(stockChoice);
System.out.println("You have chosen to delete the following book: "+(stockChoice+1));
}
public String printBook(){
String BookInfo = " "+
"\n Title: "+bTitle+
"\n Price: "+bPrice+
"\n Year: "+bYear+
"\n Stock: "+bStock+
" ";
return BookInfo;
}
public void printBookList(){
for(int i=0;i<BookList.size();i++){
System.out.printf("\n Book Number: [%s] \n",i+1); //***
System.out.println(BookList.get(i).printBook());
}
}
public void run(){
printMenu();
switch(pick){
case 1:
printBookList();
run();
break;
case 2:
addBook();
run();
break;
case 3:
deleteStock();
run();
break;
case 0:
System.out.println("Shutting down.");
break;
}
}
public static void main(String[] args) {
Book newBook = new Book();
newBook.run();
}
}
这是我的代码,当我调用addBook()时,我无法添加标题;在添加第一本书后第二次。
欢迎来到您的个人书店图书馆计划。 输入要使用的菜单编号。 1:检查列表中的书籍。 2:将书籍添加到列表中 3:删除股票。 0:退出菜单。 1 欢迎来到您的个人书店图书馆计划。 输入要使用的菜单编号。 1:检查列表中的书籍。 2:将书籍添加到列表中 3:删除股票。 0:退出菜单。 2 输入标题: 输入价格: 123 输入出版年份: 123 输入库存量: 5
答案 0 :(得分:0)
更改您的
bTitle = input.nextLine(); to bTitle = input.next();.
这是因为您的stock方法的nextInt不会消耗您输入的最后一个换行符,因此在下一次调用标题时会使用该换行符。它假定输入已经以下一行的形式进行,因此它会转到下一个输入的价格。
答案 1 :(得分:0)
printBook()
以外的所有方法都应该是静态的,因为它们与特定的书没有关联,createBook()
的内容应该在Book的构造函数中,createBook()
应该被删除, run不应该调用自己,因为如果用户提供输入太多次,这将导致StackOverflowError
,而是使用System.exit(0);
来关闭程序,其内容应该是无限循环,run()
的新内容1}}应该在printMenu()
的末尾,并且应该删除run,将修改后的printMenu()
中的所有内容移动到循环中,最后printMenu()
只能从{{1}调用一次}。另外,对于您的问题,请回答学习阶段的答案,以及我对您未来问题的回答