所以我编写了一个程序,如果你输入标题就可以输出有关书籍的信息,如果你直接输入标题作为字符串,它就可以正常工作:
bs.getBook("book");
但我想让它从控制台输入中读取标题:
String inputResult = System.console().readLine();
bs.getBook(inputResult);
但它出于某种原因并不起作用。如果我只是尝试打印输入,它会打印我输入的字符串,因此它实际上应该与getBook一起使用,但它不会。我错过了什么吗?
这是getBook方法:
public void getBook(String title) {
for (int i = 0; i < books.length; i++) {
if (books[i].title == title) {
System.out.println(books[i]);
} else {
System.out.println("0");
}
}
}
所以这是一个例子: 如果我在这样的书名中输入:
bs.getBook("book");
它打印出控制台中的信息,就像它应该这样:
Book(book, 8494030, 22.1)
但如果我尝试使用以下命令行输入标题:
String inputResult = System.console().readLine();
bs.getBook(inputResult);
它没有用。如果我尝试打印我输入的内容,尽管如此:
System.out.println(inputResult);
它打印我输入的内容,为什么它在getBook方法中无法正常工作?
答案 0 :(得分:1)
我不认为您的扫描仪/阅读器是问题所在。 在你的getBook方法中尝试将标题与equals
进行比较if (books[i].title.equals(title)) {
我假设您的.title
方法返回一个字符串,其中包含书名,如果您将其称为getTitle
您可以尝试使用缓冲读卡器
InputStream is = System.in;
BufferedReader in = new BufferedReader(new InputStreamReader(is));
System.out.println("Enter Book Title: ");
String input = "";
try {
input = in.readLine();
System.out.println("Your Input: " + input);
is.close();
in.close();
} catch (IOException e) {
System.out.println("Error reading input");
}
答案 1 :(得分:-1)
尝试从命令行使用Scanner获取值
System.out.println("Enter your book name: ");
Scanner scanner = new Scanner(System.in);
String bookName= scanner.nextLine();
System.out.println("Your book name is " + bookName);