作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文件,其中包含以下数据:
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/
我是一名优秀的程序员,十分优秀!