gpt4 book ai didi

java - 如何将文件项拆分为数组?

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

我有一个文件,其中包含以下数据:

Australia,1
Spain,3
Rome,7
Germany,2

现在我知道我们可以使用 split 函数来分隔国家名称和数字。

Scanner sc=new Scanner(f);
while(sc.hasNextLine()) {
String line=sc.nextLine();
String[] teams=line.split(",");
System.out.println(teams[0]);
}

类似这样的事情。但是当我想打印数组的第一个元素时,例如:

    System.out.println(teams[0]);

我得到的输出为:

Australia
Ghana
China
Spain

我想要的是当我尝试打印时:

    System.out.println(teams[0]);

我只想将澳大利亚作为输出。当我尝试时:

System.out.println[(teams[1]); 
I want output as Spain

我该怎么做?

这是我的代码:

import java.io.File;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Team {

private String name;
private int ranking;
private int yellowCard;
private int redCard;
int won;
int loss;
int draw;
static String[] arr;
String goalScored;



public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getRanking() {
return ranking;
}

public void setRanking(int ranking) {
this.ranking = ranking;
}

public int getYellowCard() {
return yellowCard;
}

public void setYellowCard(int yellowCard) {
this.yellowCard = yellowCard;
}

public int getRedCard() {
return redCard;
}

public void setRedCard(int redCard) {
this.redCard = redCard;
}

public static void readFile(File f) {

try {
Scanner sc=new Scanner(f);
while(sc.hasNextLine()) {

String line=sc.nextLine();
String[] teams=line.split(",");
System.out.println(teams[0]);
// int count=teams.length;
//
// int i=0;
// if(i%2 ==0) {
//
// Team team=new Team();
// String teamNames=teams[i];
// team.setName(teamNames);
// System.out.println(team.getName());
// }
}

//}
}
catch(Exception e) {
System.out.println(e);
}

}

public static void main(String[] args) {
// TODO Auto-generated method stub

File f=new File("files/teams.txt");
Team.readFile(f);
}

}

最佳答案

您的打印位于读取文件的循环中,因此它会在每一行打印国家/地区名称

您需要将它们全部存储起来,并在循环之后根据需要检索它们,并将所有内容存储在List中,因为您事先不知道大小(构建数组所需)

List<String> list = new ArrayList<>();
Scanner sc = new Scanner(f);
while (sc.hasNextLine()) {
String line = sc.nextLine();
String[] teams = line.split(",");
list.add(teams[0]);
}
System.out.println(list.get(0)); // Australia
System.out.println(list.get(1)); // Spain
<小时/>

如果您确实需要一个数组:

while (sc.hasNextLine()) {
//...
}
String[] res = list.toArray(new String[0]);
System.out.println(res[0]); // Australia
System.out.println(res[1]); // Spain
<小时/>

使用Java 8 Streams你可以做到:

String[] resArray = Files.readAllLines(f.toPath()).stream()
.map(s -> s.split(",")[0])
.toArray(String[]::new);
// or
List<String> resList = Files.readAllLines(f.toPath()).stream()
.map(s -> s.split(",")[0])
.collect(Collectors.toCollection(ArrayList::new));

关于java - 如何将文件项拆分为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50292604/

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