繁体   English   中英

Java控制台输入无法正常工作

[英]Java console input doesn't work as intended

因此,我编写了一个程序,如果您输入标题,它会打印有关一本书的信息,如果您直接将标题输入为这样的字符串,则该程序可以很好地工作:

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

我不认为您的扫描仪/阅读器是这里的问题。 在您的getBook方法中,尝试将标题与等值进行比较

if (books[i].title.equals(title)) {

我假设您的.title方法返回一个带有书名的String,如果您将其称为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");
    }

尝试从命令行使用扫描仪获取值

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM