我有一个包含此内容的字符串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),...]
而不是所需的数字。
答案 0 :(得分:4)
您需要使用charAt(i)
方法,valueOf(i)
返回i的字符串值,而不是i char
答案 1 :(得分: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)));
}
答案 2 :(得分: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的值
答案 3 :(得分: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));
}
答案 4 :(得分: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));
}
答案 5 :(得分: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) + ""));
}
答案 6 :(得分:-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