2016-07-21 29 views
-1

首先,我很抱歉,如果我很难理解我,因为我不是母语为英语的人,我的观点可能很难理解。Java OOP如何获取变量的用户输入

我想制作一个非常基础的图书馆预订系统,但我有一个获取用户输入以调整书籍详细信息的问题。

我想要做的是从用户输入中获取书籍详细信息,但我不知道如何正确执行此操作。我尝试了用于改变状态的相同样式,但它似乎不起作用。

我也有一些困难,检查和更改书籍状态从可用到预订。

这是主程序:

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

这是书类:

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:" + " "); 

     } 
    } 
+0

你怎么可以将其更改为预订时,你甚至不具备这一条件(可用性== 3)在changeAvailibility方法。 –

+0

真的不清楚你的问题是什么。您应该尝试编写代码来提问书的详细信息,然后将它们放在书上,然后告诉我们,您得到的是什么错误(构建错误或某些输入的错误输出)。 – hyde

+0

问题是我想要从用户那里询问详细信息。目前的细节是以''预订=新书(“玛丽”,“随机书”,“恐怖”,69,69);''而不是阅读输入行,但我不知道如何正确地做那。 – TRMN

回答

1

你需要在你的main()类中使用的扫描仪。例如,在您的代码中:

Scanner input = new Scanner (System.in); 

需要在尝试获取用户输入之前输入。这将允许您成功拨打input.nextInt();

参见前一个问题在这里:How can I get the user input in Java?

+0

我在我的代码上有这个,但它没有复制粘贴它出于某种原因。 – TRMN

0

作为第一个答案说你需要使用扫描仪。你所要做的就是直接将扫描器变量传递给book创建的对象。你的逻辑在一些事情上稍微偏离了一点,今晚我的手上已经有太多时间了,所以我只是用自己的方式重新解决了你的问题。

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(); 
    } 




} 



} 

其次是图书类重做

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); 

     } 
} 
+0

谢谢,让它现在工作。 – TRMN

相关问题