gpt4 book ai didi

java - 在 Java 中从 .txt 文件拆分字符串的更简单方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:55 28 4
gpt4 key购买 nike

这是我创建的代码。它按照我想要的方式工作,但我认为它可以更简单。

File test = new File("test.txt");

try{
Scanner input = new Scanner(test);

int[] testInt= new int[100];
String[] test= new String[100];
String[] print= new String[100];
int i= 0;

while(input.hasNextLine()){
test[i] = input.nextLine();
String[] temp = test[i].split(":");
testInt[i] = Integer.parseInt(temp[1]);
print[i] = temp[0];
i++;
}

for(int j=0; j<i; j++)
System.out.println(print[j] + ":" + testInt[j]);

} catch (FileNotFoundException ex){
System.out.println("File not found!");
}

这里是“test.txt”的内容:

Telur Dadar:40
Maggi Goreng:50

所需的输出类似于 test.txt 中的输出,只是整数值以 int 数据类型存储。不知何故,我认为有一种方法可以使用 nextInt() 和定界符之类的东西来实现。我试过使用 nextInt() 和一些客户定界符,但我得到的只是很多错误。

有什么建议吗?

最佳答案

您可以使用 Java 8 的以下功能来完成

package example;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class SplitFile {

public static void main(String[] args) throws IOException {
List<Integer> numbers = new ArrayList<Integer>();
List<String> names = new ArrayList<String>();

try (Stream<String> stream = Files.lines(Paths.get("test.txt"))) {
stream.forEach(s -> {
names.add(s.split(":")[0]);
numbers.add(Integer.parseInt((s.split(":"))[1].trim()));
});
}

IntStream.range(0, Math.min(names.size(), numbers.size()))
.mapToObj(i -> names.get(i) + ":" + numbers.get(i))
.forEach(System.out::println);
}

}

输出:

Telur Dadar:40
Maggi Goreng:50

关于java - 在 Java 中从 .txt 文件拆分字符串的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30143848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com