我有一个名为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 + " ");
}
答案 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
}
当我看到你提到的截图时,它不是一个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);
}
}