0

我有一个包含此内容的字符串12345

将这些单独的数字读入整数的 ArrayList 的最佳方法是什么?像这样:

{1, 2, 3, 4, 5}

这是我到目前为止所拥有的:

String data = getData();
this.points=new ArrayList<Integer>();
for (int i=0; i<data.length(); i++) {
    int pt = Integer.parseInt(data.valueOf(i));
    this.points.add(new Integer(pt));
}

问题是我得到[(0),(1),(2),...]的不是所需的数字。

4

7 回答 7

4

您需要使用该charAt(i)方法,valueOf(i)返回 i 的 String 值而不是 i char

于 2013-03-26T14:32:48.483 回答
2

此解决方案应该可以工作并将您的内存分配保持在最低限度。请注意,您需要确保数据上仅存在数值。

String data = getData();
this.points = new ArrayList<Integer>(); //if this is a field you should use points.clear() instead.

for (int i=0; i<data.length(); i++) {
  this.points.add(Characacter.getNumericValue(data.charAt(i)));
}

您的问题是您试图String.valueOf在索引上使用该方法,该方法基本上会在每次迭代中返回 i 的值

于 2013-03-26T14:46:32.233 回答
2

您可以使用从位置String.charAt获取相应的字符char。要将其添加到您需要转换为的列表中int

String data = getData();
this.points=new ArrayList<Integer>();
List<Integer> list = new ArrayList<Integer>();

for (int i = 0; i < data.length(); i++) {
    this.points.add(Character.getNumericValue(data.charAt(i)));
}
于 2013-03-26T14:32:36.723 回答
1

Integer.parseInt将取整数;你想逐位计算。为此,请Character.getNumericValue改用。

String data = getData();
this.points=new ArrayList<Integer>();
for (int i=0; i<data.length(); i++) {
    int pt = Character.getNumericValue(data.charAt(i));
    this.points.add(new Integer(pt));
}
于 2013-03-26T14:33:59.463 回答
0

使用data.charAt()而不是 valueOf. 所以你的代码应该是这样的:

        String data = getData();
        for (int i = 0; i < data.length(); i++) {
            int pt = Integer.parseInt(data.valueOf(data.charAt(i)));
            this.points.add(new Integer(pt));
        }
        for (int i = 0; i < points.size(); i++) {
            System.out.println(this.points.get(i));

        }
于 2013-03-26T14:40:33.567 回答
0

尝试这个

String data = getData();
this.points=new ArrayList<Integer>();
for (int i = 0; i < data.length(); i++) {
    this.points.add(Integer.parseInt(s.charAt(i) + ""));
}
于 2013-03-26T14:47:21.373 回答
-1

你得到所有这样的整数:

String data = "254980";
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < data.length(); i++) {
    list.add(new Integer(data.substring(i,i+1)));
}

测试:

for (Integer integer : list) {
    System.out.print(integer);
}

印刷

2 
5 
4 
9 
8 
0
于 2013-03-26T14:34:50.747 回答