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