我正在使用扫描仪从文件中读取,文本包含以下内容。
[8,3,8,2,3,4,4,4,5,8]
这最初是一个整数数组,我必须将其转换为String才能在文件中写入。现在,我需要能够将文件读回java,但我需要能够将各个数字一起添加,因此我需要将此String重新放入数组中。有帮助吗?这就是我所拥有的:
File f = new File("testfile.txt");
try{
FileWriter fw = new FileWriter(f);
fw.write(Arrays.toString(array1));
fw.close();
} catch(Exception ex){
//Exception Ignored
}
Scanner file = new Scanner(f);
System.out.println(file.nextLine());
这将打印出数字列表,但是以字符串形式显示。我需要访问数组中的整数才能添加它们。这是我第一次发帖,如果我搞砸了,请告诉我。
答案 0 :(得分:4)
您可以使用String#substring删除方括号,String#split将String
拆分为数组,String#trim删除空格,Integer#parseInt将String
转换为int值。
在Java 8中,您可以使用Stream API:
int[] values = Arrays.stream(string.substring(1, string.length() - 1)
.split(","))
.mapToInt(string -> Integer.parseInt(string.trim()))
.toArray();
对于求和,你可以使用IntStream#sum方法,而不是在最后将它转换为数组。
答案 1 :(得分:2)
您不需要在String
中阅读Array
,只需使用Regex
public static void main(String[] args) throws Exception {
String data = "[8, 3, 8, 2, 3, 4, 41, 4, 5, 8]";
// The "\\d+" gets the digits out of the String
Matcher matcher = Pattern.compile("\\d+").matcher(data);
int sum = 0;
while(matcher.find()) {
sum += Integer.parseInt(matcher.group());
}
System.out.println(sum);
}
结果:
86
答案 2 :(得分:0)
List<Integer> ints = new ArrayList<>();
String original = "[8, 3, 8, 2, 3, 4, 4, 4, 5, 8]";
String[] splitted = original.replaceAll("[\\[\\] ]", "").split(",");
for(String s : splitted) {
ints.add(Integer.valueOf(s));
}