有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java My代码未正确执行if语句

 public static void processtrans()throws FileNotFoundException{

      Scanner input = new Scanner(transFile);
      String line = input.nextLine();

      double dollar = 0;
      int transNum = 1;

      while (input.hasNextLine()) {
         int Space = line.indexOf (" ");
         int Space2 = line.indexOf (" ", Space + 1);
         String action = line.substring(0,Space);

         if (action == "ORDER"){

            int Space3 = line.indexOf (" ", Space2);
            String isbn = line.substring(Space + 1, Space2);
            int num = Integer.parseInt(line.substring(Space2 + 1, Space3));
            int custNum = Integer.parseInt(line.substring(Space3 + 1));
            System.out.println("Number= " + num);
            System.out.println("Customer number= " + custNum);
         }
         line = input.nextLine();
      }
   }

当我调试这段代码时,因为它编译但不打印任何内容,我看到它读取输入的第一行,将第一个单词分隔,并将其放入字符串操作中,但之后它查看操作是否为“顺序”,然后将所有内容跳过到该行,我不明白为什么有人可以帮助我


共 (4) 个答案

  1. # 1 楼答案

    使用equals来比较字符串

         if (action.equals("ORDER")){
    

    使用==时,比较的是字符串对象,而不是实际字符串

    正如评论中提到的,这里有一个很好的例子

  2. # 2 楼答案

    java中的==操作符比较对象的标识(即,如果它们都引用相同的内存区域,则返回^{)。为了比较对象的相等性(即,如果它们具有相同的值,则返回^{),应使用重载equals(Object)方法:

    if (action.equals("ORDER")) {
       // ...
    }
    
  3. # 3 楼答案

    在Java ==中,检查两个引用是否在内存中引用相同的对象。要检查两个字符串对象是否与其内容完全相等,必须使用^{}方法,如下所示

    if (action.equals("ORDER")){
    
  4. # 4 楼答案

    在Java中,如果两个字符串对象都是对同一个对象的引用,那么在字符串对象上使用==实际上会返回true

    为了检查字符串是否相等,有几种方法可以做到这一点

    对象有一个equals(Object o)方法,通常允许您比较对象的值,看看它们是否相等

    对于字符串

    String foo = "foo";
    String bar = "foo";
    
    if(foo.equals(bar)) {
        // Hooray
    }
    

    然而,还有另一种方法。有些人建议在测试中使用字符串文字,以避免出现NullPointerException

    例如:

    "foo".equals(bar);