我正在尝试编写一个程序来输出从csv文件接收的数据。 CSV文件由28个左右的字符串/行组成,行中的每个数据用逗号分隔为5个类别(团队名称,联盟,教练,分部和全职)。
我实际上有几个问题......
当我运行我的程序时,我会在我的教练类别中收到一个随机的字符序列(例如:[Ljava.lang.String; @ 5e34d46a],而不是我期待的名字。这与它在阵列中有什么关系吗?我将如何解决它。
每个字符串的类别在输出中显示为列表,我想将字符串数据输出到一行中。例如,而不是输出显示: 球队名称:A队 联赛:西部联盟 教练:[Ljava.lang.String; @ 1c751d58 师:2 全职:真实
我希望它显示为一行。
我的Team.java代码:
public class Team
{
private String name;
private String league;
private String[] coaches;
private String division;
private boolean fullTime;
public Team(String dataLine)
{
String[] data = dataLine.split(",");
this.name = data[0];
this.coaches = getStringAsArray(data[1], ":");
this.league = data[2];
this.division = data[3];
this.fullTime = data[4].equals("yes");
}
public Team(){
}
private String[] getStringAsArray(String t, String delimiter)
{
String[] result = t.split(delimiter);
return result;
}
private String getArrayAsString(String[] coaches)
{
coaches = this.getCoaches();
String result = "";
for(int i = 0; i<coaches.length; i++)
{
result += coaches[i] +" ";
}
result = result.trim();
return result;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setCoaches(String coaches)
{
this.coaches = getStringAsArray(coaches, ":");
}
public String getCoachesAsString()
{
String result = getArrayAsString(coaches);
return result;
}
public boolean isFullTime() {
return fullTime;
}
public void setFullTime(boolean fullTime) {
this.fullTime = fullTime;
}
public String getDivision() {
return division;
}
public void setDivision(String division) {
this.division = division;
}
public String[] getCoaches() {
return coaches;
}
public void setCoaches(String[] coaches) {
this.coaches = coaches;
}
public String getLeague() {
return league;
}
public void setLeague(String league) {
this.league = league;
}
@Override
public String toString() {
return "Team name: " + name + "\nLeague: " + this.league + "\nCoaches: " + this.coaches + "\nDivision: " + this.division + "\nFull Time: " + this.fullTime;
}
}
我的StoreData.java代码:
import shiftershape.model.Team;
import java.util.ArrayList;
public class StoreData {
public static ArrayList<Team> teams = new ArrayList<Team>();
public static String getTeams()
{
String s = "";
for(int i = 0; i < teams.size(); i++){
s += teams.get(i);
}
return s;
}
public static ArrayList<Team> TeamListFromArray(String[] as)
{
ArrayList<Team> teams = new ArrayList<Team>();
// for( int i= 0 ; i < as.length; i++){
for (String s: as){
teams.add(new Team(s));
}
return teams;
}
}
我的ReadCSV.java代码:
import Utilities.StoreData;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import shiftershape.model.Team;
public class ReadCsv {
public void readCsv() {
String csvFileToRead = "C:/Users/Fryyy/Desktop/FootballRepo/TestData/football_teams_phase1.csv";
BufferedReader br = null;
String line = "";
try {
br = new BufferedReader(new FileReader(csvFileToRead));
int i = 0;
while ((line = br.readLine()) != null) {
Team one = new Team(line);
if(i > 0){
StoreData.teams.add(new Team(line));
}else{
i++;
}
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static ArrayList<Team> getTeams() {
return StoreData.teams;
}
public static void setTeams(ArrayList<Team> teams) {
StoreData.teams = teams;
}
}
我的FootballC.java代码:
import Utilities.StoreData;
import shiftershape.model.Team;
public class FootballC {
public static void main(String[] args)
{
ReadCsv junk = new ReadCsv();
junk.readCsv();
System.out.println(StoreData.getTeams());
}
}
答案 0 :(得分:0)
System.out.println(StoreData.getTeams());
会在String []
toString()
试试这个:
for (String s : StoreData.getTeams()) {
System.out.println(s);
}
答案 1 :(得分:0)
[Ljava.lang.String; @ 5e34d46a)是打印到标准输出时对象的资源代码。在这种情况下,它是一个字符串,所以在某处你看起来像是在打印一个数组而不是数组中的值,导致显示资源ID而不是其中的值,因为Java没有打印数组内容默认。
答案 2 :(得分:0)
[Ljava.lang.String; @ 1c751d58是数组的String版本。数组没有很好的toString()方法。如果您使用Lists而不是Arrays,它将打印得更好。
将数组快速转换为列表是Arrays.asList(array);