【问题标题】:Barcode Numbers too long for Integer.parseIntInteger.parseInt 的条形码编号太长
【发布时间】:2014-12-15 08:08:15
【问题描述】:

我将 zbar 用于条形码服务,并且在某些数量下应用程序会关闭。

我正在扫描条形码,在编辑文本中接收条形码,设置它以便搜索 json 数组以查找匹配的 id。好吧,这对于整数扩展到的普通数字来说很好。但是我需要让它接受它所包含的任何值。

当使用像 000.000.000.022-22ON 这样的断点时,应用程序也会关闭。

有没有人知道如何避免这种情况?

是否可以让它检查输入的任何内容?

看过不同的 sn-ps 和教程,但找不到答案..

     String xyz = edt.getText().toString();
            try {    // Getting JSON Array
                user = json.getJSONArray(TAG_FIXTURE);
JSONObject c = user.getJSONObject(Integer.parseInt(xyz)-1);

【问题讨论】:

    标签: android json zxing parseint


    【解决方案1】:

    Integer.parseInt(value) 要求字符串只包含数字。

    如果你看这里,海报也有类似的问题。 Get int from String, also containing letters, in Java

    或者,如果您正在搜索的数据库中可能存在“22-22ON”之类的 ID,您可以尝试简单地使用字符串并尝试与之匹配。

    【讨论】:

    • 我的意图是只为 JSON 数组中的值生成结果。是否可以让它搜索字符串值?当该值不存在时,我将显示一条消息,例如“未找到产品”。
    • 这绝对是可能的,但如果数组很大,遍历每个元素并检查 String.equals 可能会很慢。如果 JSONArray 不包含数千个元素,那么它应该不是太大的问题。只需执行类似 for(JSONObject c : user) 的操作,然后将包含的值与 xyz 进行比较。如果匹配,则您知道它存在于数组中,如果不匹配,则它不存在
    • 我是否将值与 equals() 进行比较?
    • 这取决于您的 JSONArray 中的内容,但也许您可以将 JSONObject c 替换为字符串,然后在 for 循环中检索它,例如 for(int i = 0; i<user.size(); i++){String c = user.getString(i); if(c.equals(xyz){ //do something }}
    猜你喜欢
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多