Java 使用扫描器的输入分配类

Java 使用扫描器的输入分配类,java,Java,在这里,我试图获取book1变量,并将其与类的一个成员正确关联。我认为最好的解释方法是用一个例子:如果用户输入的book1是“12年的奴隶”,那么book1的值将是“12年”,这是接近代码开头的类定义之一,因此在将来,我可以使用像book1.getAuthor这样的访问器/变异器方法 我只是在学习java,所以我很可能无法正确地解释这一点,所以我很抱歉,但是非常感谢您的帮助,如果我想在这里做什么,我很乐意回答任何问题,但我希望我已经足够清楚了 谢谢大家! 将所有书籍放入ArrayList中。迭代

在这里,我试图获取book1变量,并将其与类的一个成员正确关联。我认为最好的解释方法是用一个例子:如果用户输入的book1是“12年的奴隶”,那么book1的值将是“12年”,这是接近代码开头的类定义之一,因此在将来,我可以使用像book1.getAuthor这样的访问器/变异器方法

我只是在学习java,所以我很可能无法正确地解释这一点,所以我很抱歉,但是非常感谢您的帮助,如果我想在这里做什么,我很乐意回答任何问题,但我希望我已经足够清楚了


谢谢大家!

将所有书籍放入
ArrayList
中。迭代
ArrayList
并使用
book1.equals(a1.get(i).getBookName)
如果匹配
book1=a1.get(i).getBookTitle

如果必须根据字符串决定要创建哪个对象,只需对图书标题执行一系列检查并确定要创建哪个对象。假设
12年
GreatGatsby
都继承自
Book
,那么您可以执行以下操作:

    import java.util.Scanner;

public class Library {
    public static void main(String [] args) {
    /*
     * Patron class: name + 3 books
     * Book class: author + title
     */
    Book TwelveYears = new Book ("12 Years a Slave", "Solomon Northup");
    Book Diary = new Book ("The Diary of John Smith", "John Smith");
    Book Fahrenheit451 = new Book ("Fahrenheit 451", "Ray Bradbury");
    Book Gatsby = new Book ("The Great Gatsby", "Fitzgerald");
    Book Antigone = new Book ("12 Years a Slave", "Sophocles");




    System.out.println("Welcome to library account management! Here is a list of books to check out: " +TwelveYears.getBookTitle()+", "+Diary.getBookTitle()+", "+Fahrenheit451.getBookTitle()+", "+Gatsby.getBookTitle()+", "+Antigone.getBookTitle()+".");
    Scanner sc=new Scanner(System.in);
    System.out.println("Enter your name!");
    String enteredName = sc.nextLine();
    System.out.println("Enter your first book! Enter it exactly as seen above.");
    String book1 = sc.nextLine();
    System.out.println("Enter your second book!");
    String book2 = sc.nextLine();
    System.out.println("Enter your third book!");
    String book3 = sc.nextLine();
    Patron patron1 = new Patron(enteredName, book1, book2, book3);
    book1 = //line I need help on
    System.out.println("Here are the books you are checking out: " +book1+ ", " +book2+ ", " +book3+ ".");





    }

}
在这里,您的
参考资料可以指向
12年
GreatGatsby
,因为

但这里可能有一个更好的方法来做你想做的事:
假设所有用于您的目的的对象都非常相似(在您的示例中,您有
book
s,比如
tweeveyears
GreatGatsby
),如果您只编写一个类,比如
book
,并让该类执行所有处理,而不是创建单独的类,那么可能会更容易

然后,您只需创建
Book
类的实例,将图书名称作为属性分配给这些实例,并将它们收集到某种对象中,这将使您的代码更加灵活和可重用(如果将它们放在
ArrayList
中,您可以在
Book
上循环)

具体地说,您的
Book
类可以有一个属性,比如
bookName
,以及类似的方法

Book unknownBook;
switch(bookTitleScanned)
{
    case("Twelve Years a Slave")
        unknownBook = new TwelveYears();
    case("Great Gatsby")
        unknownBook = new GreatGatsby();
    ...
}
甚至:

public void getBookName()
{
    return bookName;
}

book1.getAuthor()无法工作,因为book1是字符串的实例。如果这是你想要的。你的意思是如何以结构化的方式构建代码,根据用户输入的内容检索书籍?例如,如果用户输入书名或作者,您返回相关书籍?我相信OP的问题是“使用扫描器的输入指定类”,因此我假设有多个类可用。感谢您的书面回答!这帮了大忙!
public void handleParticularBook()
{
   if (bookName.equals("GreatGatsby"))
      System.out.println("My favorite book!");
   else if ...
}