java - 我的 java if 语句似乎不起作用

标签 java android zxing

我不确定为什么,但是当我在我的 android 应用程序中使用 zxing 获取条形码时,格式返回为 EAN_13 但我的 if staement 决定不是,然后在我的 toast 通知中显示 EAN_13。关于它为何损坏的任何线索?

public void onActivityResult(int requestCode, int resultCode, Intent  Intent ) {
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    如果(扫描结果!=空){
        如果(结果代码== 0){
           //如果用户取消扫描
            Toast.makeText(getApplicationContext(),"你取消了扫描", 3).show();
        }
        别的{
            字符串内容 = intent.getStringExtra("SCAN_RESULT");
            字符串格式 = intent.getStringExtra("SCAN_RESULT_FORMAT").toString();
            如果(格式==“EAN_13”){
               //如果扫描的条码类型正确则将条码传递给搜索方法以获取产品详细信息
                Toast.makeText(getApplicationContext(),"您扫描了"+ contents, 3).show();
            }
            别的{
               //如果条形码类型不正确,则显示通知
                Toast.makeText(getApplicationContext(),contents+""+format, 3).show();
            }
        }
    }
}

最佳答案

在 Java 中,您不能(好吧,不应该)使用== 运算符来比较两个字符串。你应该使用:

if (stringOne.equals(stringTwo)) { ... }

或者,在您的情况下:

if ("EAN_13".equals(format)) { ... }

在 Java 中,当处理对象时,双等号运算符通过引用相等性 比较两个对象。如果你有两个字符串:

String one = "Cat";
String two = "Cat";
boolean refEquals = (one == two); // false (usually.)
boolean objEquals = one.equals(two); // true

我说它通常不会是真的,因为根据系统中字符串创建的实现方式,它可以通过允许两个变量指向同一 block 来节省内存 内存。但是,期望它起作用是非常糟糕的做法。

旁注:使用上述策略时,您必须确保第一个字符串不是null,否则您将抛出一个NullPointerException。如果您有能力在项目中包含外部库,我会推荐 Apache Commons Lang 库,它允许:

StringUtils.equals(stringOne, stringTwo);

关于java - 我的 java if 语句似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419295/

相关文章:

java - 如何在同一个Jslider上添加两个指针?

java - 如何将文件名分为基本名和扩展名

java - 获取单个单元格值的Sql语句

android - 单击 webview 时应用程序崩溃

android - sendWakefulWork 并不总是用 cwac-wakeful-1.1.0 调用

android - 条码扫描 是否有用于获取产品详细信息等的 API?

java - IBM JRE : validate DOMSource with xsd doesn't work

android - CollapsingToolbarLayout 有时会在下方留下空白

c++ - 错误 : 'srandom' was not declared in this scope

c# - 使用 ZXing.Net 生成 EAN 条码并获取 base64 字符串