gpt4 book ai didi

java - 使用来自扫描器的输入来分配类

转载 作者:行者123 更新时间:2023-11-29 04:56:36 24 4
gpt4 key购买 nike

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





}

}

在这里,我尝试获取 book1 变量,并将其与类的成员正确关联。我认为解释我在这里尝试做的事情的最好方法是举个例子:如果用户输入的 book1 是“12 Years a Slave”,那么 book1 的值将是“TwelveYears”,这是开始附近的类定义之一的代码,所以在未来,我可以使用像 book1.getAuthor 这样的访问器/修改器方法。

我只是在学习 java,所以我很可能缺乏正确解释这一点的方法,所以我深表歉意,但我们将不胜感激任何帮助,如果我正在尝试,我很乐意回答任何问题在这里做,但我希望我足够清楚。

谢谢!

最佳答案

如果您必须根据字符串来决定要创建哪个对象,您可以简单地对书名进行一系列检查并确定要创建哪个对象。假设 TwelveYearsGreatGatsby 都继承自 Book,那么你可以这样做:

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

这里您的Book 引用可以指向TwelveYearsGreatGatsby 因为polymorphism .

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

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

具体来说,您的 Book 类可以有一个属性 bookName,以及类似

的方法
public void getBookName()
{
return bookName;
}

甚至:

public void handleParticularBook()
{
if (bookName.equals("GreatGatsby"))
System.out.println("My favorite book!");
else if ...
}

关于java - 使用来自扫描器的输入来分配类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33559237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com