Java控制台输入无法按预期工作

时间:2017-01-12 14:05:23

标签: java string input console

所以我编写了一个程序,如果你输入标题就可以输出有关书籍的信息,如果你直接输入标题作为字符串,它就可以正常工作:

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方法中无法正常工作?

2 个答案:

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