First of all, I am sorry if it's hard to understand me as I am not native English speaker my point might be hard to understand.
I am trying to make a very basic library booking system, but I have a problem with getting user input to adjust book details.
What I am trying to do is to get the book details from user input, but I don't know how to do this properly. I tried the same style that I use to change status but it doesn't seem to work.
I am also having some difficulties with checking and changing the books status from available to booked.
This is the main program:
public static void main(String[] args) {
System.out.println("Welcome to the basic library program! ");
System.out.println("Insert author, name, genre, ISNB, page number ");
// this one is wrong.
Book booking = new Book("Mary","Random Book","Horror",69,69);
System.out.println("Print book information? 1 = yes 2 = no?");
int answer = input.nextInt();
if (answer == 1) {
booking.printBook();
}
else {
}
System.out.println("Check books status? 1= yes 2= no");
int status = input.nextInt();
if (status == 1) {
booking.checkStatus();
}
else {
}
System.out.println("Change books status: 1 = Avaible 2 = Booked 3 = Lost ");
int availability = input.nextInt();
booking.changeAvailability(availability);
}
And this is the book class:
public class Book {
private String author;
private String name;
private String genre;
private int isbn;
private int pageNumber;
private int availability;
private String setAvailability;
public Book(String authorInput, String nameInput, String genreInput, int isbnInput, int pageInput) {
this.author = authorInput;
this.name = nameInput;
this.genre = genreInput;
this.isbn = isbnInput;
this.pageNumber = pageInput;
}
public void changeAvailability(int availability) {
if (availability == 1) {
setAvailability = "Avaible";
System.out.println("Avaible.");
}
else if (availability == 2) {
setAvailability = "Not avaible";
System.out.println("Not avaible.");
}
else if (availability == 3) {
setAvailability = "Lost";
System.out.println("Book missing.");
}
else {
System.out.println("Unknown input: Program closing..");
System.exit(1);
}
}
public String checkStatus() {
return this.setAvailability;
}
public void printBook() {
System.out.print("Author: " + this.author + "\nName: " + this.name + "\nGenre: " + this.genre + "\nISBN: " + this.isbn + "\nPages: " + this.pageNumber + "\nAvailability:" + " ");
}
}
You need to use a Scanner in your main() class. For example in your code:
Scanner input = new Scanner (System.in);
needs to be entered before you try to get the user's input. This will allow you to call input.nextInt();
successfully.
See a previous question here: How can I get the user input in Java?
As the first answer said you needed to use a Scanner. All you had to do was pass the scanner variables into the book created object directly. Your logic was a slightly off on a couple things and I have had way too much time on my hands tonight so I just redid your problem my way.
import java.util.Scanner;
public class bookTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Welcome to the basic library program! ");
System.out.println("Insert author, name, genre, ISNB, page number ");
String author = input.next();
String name = input.next();
String genre = input.next();
int isbn = input.nextInt();
int pageNumber = input.nextInt();
Book booking = new Book(author,name ,genre,isbn,pageNumber);
System.out.println("Change books status: 1 = Avaible 2 = Booked 3 = Lost ");
int availability = input.nextInt();
booking.changeAvailability(availability);
System.out.println("Print book information? 1 = yes 2 = no?");
int answer = input.nextInt();
if (answer == 1) {
booking.printBook();
}
System.out.println("Check book status? 1= yes 2 = no");
int status = input.nextInt();
if (status == 1) {
booking.checkStatus();
}
}
}
Next is the Book class redid
public class Book {
private String author;
private String name;
private String genre;
private int isbn;
private int pageNumber;
private int availability;
public Book(String authorInput, String nameInput, String genreInput, int isbnInput, int pageInput) {
this.author = authorInput;
this.name = nameInput;
this.genre = genreInput;
this.isbn = isbnInput;
this.pageNumber = pageInput;
}
public void changeAvailability(int setAvailability) {
if (setAvailability == 1) {
availability = 1;
}
else if (setAvailability == 2) {
availability = 2;
}
else if (setAvailability == 3) {
availability = 3;
}
else {
System.out.println("Unknown input: Program closing..");
System.exit(1);
}
}
//Instead of set use get
public void checkStatus() {
if (availability == 1) {
System.out.println("Avaible.");
}
else if (availability == 2) {
System.out.println("Not avaible.");
}
else if (availability == 3) {
System.out.println("Book missing.");
}
else {
System.out.println("Unknown input: Program closing..");
System.exit(1);
}
}
public void printBook() {
System.out.println("Author: " + this.author + "\nName: " + this.name + "\nGenre: " + this.genre + "\nISBN: " + this.isbn + "\nPages: " + this.pageNumber);
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.