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

How to split file items into array?

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

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

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

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);
}

}

您的印刷品在读取您的文件的 loop 中,因此它会在每一行印刷国家名称

您需要将它们全部存储起来,然后在 loop 之后根据需要检索它们,所有这些都在 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

如果你真的需要 array 之后:

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

使用 Java 8 条流 你可以做到:

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));