2017-04-09 1 views
0
내부에 새로운 객체입니다

은 누군가가 나 입력을 ArrayList에 3 객체로이 데이터 (각 플레이어를 도울 수) ArrayList에로 저장?(filechooser와) 텍스트 파일을 읽고 (각 라인은 ArrayList를

텍스트를

Steve| Barkley| 258| 300 
Carl |Johnson |142 
Frank|Davidson 

자바 코드 : 예 : 파일.

//couldn't write the normal jfilechoose code above due to space 
    File playerFile = new File(selectedFile.getAbsolutePath()); 

    Scanner in = new Scanner(playerFile); 

    String[] playerData; //array to hold data 

    while (in.hasNext()) { 
     String data = in.nextLine(); 

     playertData = data.split("\\|"); 
     playerData = Arrays.copyOf(playerData,playerData.length+1); 

     String firstName = playerData[0]; 
     String lastName = playerData[1]; 

     double playererayear1 = Double.parseDouble(playerData[2]==null?"0":playerData[2]); 
     double playererayear2 = Double.parseDouble(playerData[3]==null?"0":playerData[3]); 

     double playererayear3 = Double.parseDouble(playerData[4] == null?"0":playerData[4]); 
+0

에 추가 할 수 있습니다? – prasanth

+0

아 testruns를하고 있지만 여전히 player를하고있는 동안 우연히 학생 이름을 바꿨습니다 질문을 편집 할 수 있는지 확인하려고합니다 – Alexa431

+0

'ArrayList '또는 'ArrayList '을 갖고 싶습니까? – prasanth

답변

0

당신은 플레이어에 대한 정보를 보유하기위한 별도의 클래스를 만들 수 있습니다

public class Player { 
    private String firstName; 
    private String lastName; 
    private double playerEraYear1; 
    private double playerEraYear2; 
    private double playerEraYear3; 

    public String getFirstName() { 
    return firstName; 
    } 

    public void setFirstName(String firstName) { 
    this.firstName = firstName; 
    } 

    public String getLastName() { 
    return lastName; 
    } 

    public void setLastName(String lastName) { 
    this.lastName = lastName; 
    } 

    public double getPlayerEraYear1() { 
    return playerEraYear1; 
    } 

    public void setPlayerEraYear1(double playerEraYear1) { 
    this.playerEraYear1 = playerEraYear1; 
    } 

    public double getPlayerEraYear2() { 
    return playerEraYear2; 
    } 

    public void setPlayerEraYear2(double playerEraYear2) { 
    this.playerEraYear2 = playerEraYear2; 
    } 

    public double getPlayerEraYear3() { 
    return playerEraYear3; 
    } 

    public void setPlayerEraYear3(double playerEraYear3) { 
    this.playerEraYear3 = playerEraYear3; 
    } 
} 

이제 플레이어의 각각에 대해 Player 객체를 생성, 파일을 구문 분석하고 여기에 studentdata 무엇인지 목록

public void parseFile() { 
    File playerFile = new File(selectedFile.getAbsolutePath()); 
    Scanner in = new Scanner(playerFile); 
    List<Player> players = new ArrayList<>(); 
    while (in.hasNext()) { 
     String data = in.nextLine(); 
     String[] playerData = data.split("\\|"); 

     Player p = new Player(); 
     p.setFirstName(playerData[0]); 
     p.setLastName(playerData[1]); 

     if (playerData.size >= 3) { 
     double playererayear1 = Double.parseDouble(playerData[2] == null ? "0" : playerData[2]); 
     p.setPlayerEraYear1(playererayear1); 
     } 

     if (playerData.size >= 4) { 
     double playererayear2 = Double.parseDouble(playerData[3] == null ? "0" : playerData[3]); 
     p.setPlayerEraYear2(playererayear2); 
     } 

     if (playerData.size >= 5) { 
     double playererayear3 = Double.parseDouble(playerData[4] == null ? "0" : playerData[4]); 
     p.setPlayerEraYear3(playererayear3); 
     } 

     players.add(p); 
    } 
} 
+0

불행하게도 내가 가지고 : 선정 된 파일 : C : \ 사용자 \ 요크셔 \ 문서가 스레드에서 PlayerData.txt 예외 \ "기본"java.lang.ArrayIndexOutOfBoundsException : 4 PlayerList.parseFile에서 \t (PlayerList.java:44) \t에서을 Driver.main (Driver.java:6) – Alexa431

+0

당신이 텍스트 파일의 마지막 열을 가지고 있지 않다는 뜻입니다. 각 플레이어의 텍스트 파일에 몇 개의 열이 있습니까? 5 시까 지? – prasanth

+0

각 행에 대해 동일한 수의 열이되지 않으면 1, 2 및 3 년 동안 playerEraYear를 설정하기 전에 수표를 추가 할 수 있습니다. – prasanth

0
package com.aegle.validator; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.Scanner; 

public class Test { 
    public static void main(String[] args) throws FileNotFoundException { 
     List<Player> playerList = new ArrayList<Player>(); 
     File playerFile = new File("");//Set your file path 
     Scanner in = new Scanner(playerFile); 

     while (in.hasNext()) { 
      String[] data = in.nextLine().split("\\|"); 
      Player player = new Player(data[0], data[1]); 
      player.setYears(Arrays.copyOfRange(data, 2, data.length)); 
      playerList.add(player); 
     } 

     System.out.println(playerList);//Just to test 
    } 
} 

class Player { 
    String firstName; 
    String lastName; 
    String[] years; 

    public Player(String firstName, String lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    public void setYears(String[] years) { 
     this.years = years; 
    } 

    //Introduce getters as you need 

    @Override 
    public String toString() { 
     return "Player{" + 
       "firstName='" + firstName + '\'' + 
       ", lastName='" + lastName + '\'' + 
       ", years=" + Arrays.toString(years) + 
       '}'; 
    } 
} 
관련 문제