试图从数组列表中获取整数变量

时间:2014-01-05 17:11:06

标签: java arraylist integer

我有一个名为casesArrayList的字符串数组列表。我在数组列表中有几个单词和一些数字......我试图从数组列表中获取数字并生成整数,以便我可以用这些数字进行一些计算。这是我的代码不起作用:

我的阵列列表如下所示:已打开已打开已打开已打开已打开我的案例300000 100 25000 0 500 400000 100000 75000 1 5 500000 75 25 750000 1000 10 200000 400 750 ,如果我使用{{ 1}}在for循环中。

System.out.print(casesArrayList.get(j) + " ")

//此时输出为: 300000 100 25000 0 500 400000 100000 75000 1 5 500000 75 25 750000 1000 10 200000 400 750

//错误出现在下一行:

    for (int j = 0; j < casesArrayList.size(); j++)
       {
        if (!casesArrayList.get(j).equals("My Case") &&  !casesArrayList.get(j).equals("Opened")) {
          System.out.print(casesArrayList.get(j) + " ");
       }

如何从数组列表中获取数字并生成变量,因为parseInt,valueOf或(int)不起作用。

我编辑了代码:

       int c = (int) casesArrayList.get(j);
       System.out.print(c + " ");
    }

错误信息仍然是: 找不到适合parseInt(java.lang.Object)

的方法

方法java.lang.Integer.parseInt(java.lang.String)不适用;

http://i.stack.imgur.com/fxl0o.png

非常感谢你们,我不是Java专家,我犯了一些非常明显的错误,但我终于成功了...... @ Suresh是对的,完美的代码是:

for ( int j = 0; j < casesArrayList.size(); j++) {
        if (!casesArrayList.get(j).equals("My Case") &&  !casesArrayList.get(j).equals("Opened")) {
          System.out.print(casesArrayList.get(j) + " ");
       }

        try {
            int c = Integer.parseInt(casesArrayList.get(j));
            System.out.print(casesArrayList.get(j) + " ");
        } catch (Exception e) {
            System.out.println(e);
       }
          System.out.print(c + " ");
    }

4 个答案:

答案 0 :(得分:4)

由于casesArrayList是一个字符串ArrayList,因此每个值都是String,您需要解析该字符串。不是直接演员

try {
     System.out.println(Integer.parseInt(casesArrayList.get(j)));
} catch(NumberFormatException ex){
   // do something here if it is not a number     
}

请参阅Integer.parseInt()

当我看到你提到的截图时,它不是一个String ArrayList,你得到一个类型为Object(不确定)。尝试将其强制转换为String,然后尝试。

  System.out.println(Integer.parseInt((String)casesArrayList.get(j)));

答案 1 :(得分:0)

尝试循环浏览列表并执行此操作。

boolean isNum = false;
try {
   Integer.parseInt(str);
   isNum = true;
}catch(Exception ex){
   isNum = false;     
}

这将告诉您哪些元素是整数,哪些元素不是。
然后只需要那些内注并按照你的意愿处理它们。

答案 2 :(得分:0)

casesArrayList定义为:

List<String> casesArrayList = new ArrayList<String>();
casesArrayList.add("Opened");
casesArrayList.add("Opened");
casesArrayList.add("My Case");
casesArrayList.add("200s0");
casesArrayList.add("1000");

您的代码应如下所示:

for (int j = 0; j < casesArrayList.size(); j++) {
    if (!casesArrayList.get(j).equals("My Case") && !casesArrayList.get(j).equals("Opened")) {
        try {
            int c = Integer.parseInt(casesArrayList.get(j));
            System.out.print(casesArrayList.get(j) + " ");
        } catch (Exception e) {
            System.out.println(e);
        }

    }
}

答案 3 :(得分:0)

将String解析为Integer不是很优雅,而且,它可能会抛出异常。

您可以使用正则表达式匹配:

List<String> list = Arrays.asList("Word", "12321");
List<String> strings = new ArrayList<String>();
for (String e : list) {
    if (!e.matches("\\s*-?\\d+\\s*")) {
        strings.add(e);
    }
}