我在java中有一个“String line”变量 当我给出
System.out.println(line);
它为我输出
233 81 335 332 165 56 82 316 123 247 328 348 177 89 86 1 252 228 34 350 116 91 193 106 272
121 56 203 179 259 25 163 101 77 116 135 29 257 254 400 195 192 20 59 270 350 116 92 6 87
22 230 126 207 393 73 399 57 96 93 9 196 172 111 192 234 315 59 35 351 390 239 88 339 145
17 161 330 328 198 47 194 107 231 312 260 118 369 344 114 355 99 117 199 219 5 255 336 124
以上输出是4个单独的行。
现在我想将此字符串转换为int数组,这样整数数组的每个位置都将保存这些数字。 我尝试了Tokenizing和解析它,但是当数据非常大的近200000行记录时,它给了我一个错误。
有什么建议吗? 请帮助。
答案 0 :(得分:4)
使用Scanner类将您的行(字符串)传递给Scanner
构造函数,并使用方法hasNextInt()
检查并nextInt()
获取和存储通过使用ArrayList<Integer>
将其loop
。
答案 1 :(得分:1)
将此理解为作业问题,而不是给出答案,我会给出一些指示。查找String.split()
,Integer.parseInt()
和for
循环。
答案 2 :(得分:1)
只是给你一个提示, 初始化一个数组int, 尝试循环到你的字符串,按空格分割它或你想要的分隔符然后使用解析或将你的字符串转换为int所以你可以将它添加到整数数组, 然后将该拆分项添加到您的数组中 并打印数组以查看它是否已添加。
基本循环和数组操作,你在这里会很好。
答案 3 :(得分:1)
您可以将该String传递给扫描程序,并且对于扫描程序读取的每个int,使用Integer.parseInt()将该标记解析为int,并将其添加到新数组中。
Scanner scan = new Scanner(yourString);
ArrayList<Integer> ints = new ArrayList<>();
while (scan.hasNext())
{
ints.add(Integer.parseInt(scan.next()));
}
请注意,如果令牌不是int,则会抛出异常,因此您需要在try-catch中添加一些检查或将其包围...
ints.toArray()会将您的ArrayList转换为数组,如果你明确要求那么......