gpt4 book ai didi

java 数组的分割方法

转载 作者:行者123 更新时间:2023-12-01 07:46:53 27 4
gpt4 key购买 nike

我有如下数据:

3.3 John
3.9 Jim
3.5 Kathy
3.2 Steve
2.4 Stacy
2.8 Faith

代码:

File StudentGrade = new File("data.txt");
Scanner reader = new Scanner(StudentGrade);
int size = reader.nextInt();
//debug: System.out.println(size);

String[] gradeArr = new String[size];// array created for grades
//debug: System.out.println(gradeArr);
String[] nameArr = new String[size];//array created for name
String[] temp = new String[100];// array created for temporary array
int index = 0;//index indicator

while (reader.hasNextLine()) {
String s = reader.nextLine();
//System.out.println(s);
temp = s.split("\\s+");
gradeArr[index] = temp[0];
nameArr[index] = temp[1];
System.out.println("grades= "+ gradeArr[index]+ " name = "+ nameArr);
index++;
}

它必须分成 2 个数组,一个用于数字,另一个用于名称。我可以将数字获取到 temp[],但我不知道如何将名称转换为另一个数组。请教我。

最佳答案

这看起来是一个应用正则表达式的好地方,将数字.数字空格和连续的单词字符分组。迭代匹配。构建两个列表。就像,

Pattern p = Pattern.compile("(\\d+\\.\\d+)\\s+(\\w+)");
List<Double> grades = new ArrayList<>();
List<String> names = new ArrayList<>();
String s = "3.3 John 3.9 Jim 3.5 Kathy 3.2 Steve 2.4 Stacy 2.8 Faith";
Matcher m = p.matcher(s);
while (m.find()) {
grades.add(Double.valueOf(m.group(1)));
names.add(m.group(2));
}
System.out.printf("%s %s%n", grades, names);

输出

[3.3, 3.9, 3.5, 3.2, 2.4, 2.8] [John, Jim, Kathy, Steve, Stacy, Faith]

关于java 数组的分割方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094030/

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