java - 输出应该是数组中的内容

标签 java

我正在做一个图书馆系统,一旦我输入书名,并在数组中找到,输出将是“书已归还”。但每次我输入数组中列出的一本书籍的名称时,它仍然说“这本书是乱序的”。我该如何解决这个问题?

import java.util.Scanner;
public class NewClass {
    public static void main (String args[]){
        Scanner book = new Scanner(System.in);
        String [] library = new String [4];
        library [0] = "Brazil";
        library [1] = "Japan";
        library [2] = "China";
        library [3] = "India";       

        String bookEntry = " ";
        int day;
        int x = 2;
        int penalty;
         for (int i = 0; i < library.length; i++){
        System.out.println("Insert name of the book: ");
        bookEntry= book.next();

           if (bookEntry == library[i]){
               System.out.println("The book was returned");
           }else if (bookEntry != library[i]){ 
               System.out.println("The book is out of order");

System.out.println("\n" + bookEntry.toUpperCase()+ " " + "is out since: ");
day = book.nextInt();

if (day > x){
    penalty = day*20;
    System.out.println("Total fine: " + penalty);
}else{
    System.out.println("Not yet due.");
}
       }


    }
    }
}

最佳答案

在 Java 中,您不能通过 == 来比较 2 个字符串。

而是使用 String 类的 .equals() 方法。

  • ==            -> 是引用比较,即两个对象都指向相同的内存位置
  • .equals()  -> 计算值的比较 对象

更多相关信息here

更正以下代码:

import java.util.Scanner;

public class NewClass {

public static void main(String args[]) {
    Scanner book = new Scanner(System.in);
    String[] library = new String[4];
    library[0] = "Brazil";
    library[1] = "Japan";
    library[2] = "China";
    library[3] = "India";
    String bookEntry = " ";
    int day;
    int x = 2;
    int penalty;
    System.out.println("Insert name of the book: ");
    bookEntry = book.next();
    boolean present = false;
    for (int i = 0; i < library.length; i++) {
        if (bookEntry.equals(library[i])) {
            present = true;
            break;
        }
    }
    if (present) {
        System.out.println("The book was returned");
    } else {
        System.out.println("The book is out of order");
        System.out.println("\n" + bookEntry.toUpperCase() + " " + "is out since: ");
        day = book.nextInt();
        if (day > x) {
            penalty = day * 20;
            System.out.println("Total fine: " + penalty);
        } else {
            System.out.println("Not yet due.");
        }
    }
}
}

工作代码here

更新:我更改了代码。

关于java - 输出应该是数组中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31229548/

相关文章:

java - 如何在 JDBC 中使用 Mysql 行构造函数进行查询?

java - 我可以用 Java 编写部分 Google App Engine 代码,而其他部分用 Python 编写吗?

java - 分块读取大文本文件处理

java - 使用 Jersey 的 JAXRS Rest 服务中的问题

java - 贾斯珀报告 6.3。 queryString 中使用的 plsql 语言出现 'Class com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory not found' 错误

java - 无法在窗口之间切换 - 无法显示浏览器消息

java - JSON - 遍历 JSONArray

java - 这个 TCP 交互有什么问题?

java - 如何将 Java 字符串大写(重音字符除外)

java - Shift+单击以选择 JavaFX TableView 中的多个单元格挂起