2014-12-28 1 views
1

텍스트 파일을 개체 배열로 읽는 방법이 있습니까? 문자열의 객체 배열을 사용하여이 작업을 수행했습니다. 그러나 객체 배열을 사용하여이를 수행하는 방법을 알 수는 없습니다. 즉 카드의 핸드 오브젝트 어레이. 여기 내 코드가있다.텍스트 파일을 객체의 객체 배열로 읽어들입니까?

try { 
      FileReader fr = new FileReader(file_name); 
      BufferedReader buf = new BufferedReader(fr); 
      //Create temporary arraylist to store hand 
      ArrayList<Hand> tempHand = new ArrayList<>(); 
      Hand hand; 

      int numLines = 0; 
      String lineHand; 
      while ((lineHand = buf.readLine()) != null){ 
      numLines++; 
      //Initialise new empty hand object 
      hand = new Hand(); 
      //Add hand 
      hand.addHand(lineHand); 
      //Add hand to temporary array 
      tempHand.add(hand); 

     } 
      //display hands 
      for (int i =0; i<tempHand.size(); i++){ 
       System.out.println(tempHand.get(i).getHand()); 
      } 

     } 
     catch(IOException e) { 
      e.printStackTrace(); 
     } 

위의 코드를 사용하면 어디에서 잘못되었는지 알 수 있지만 해결 방법을 찾을 수 없습니다. 문자열 대신 lineHand를 입력하려고했지만 buf.readline()을 사용하여 문제가 발생했습니다. 이 문제를 어떻게 해결할 수 있을지에 대한 아이디어가 있습니까?

+0

정확히 무엇입니까? 파일을 읽을 때 String 대신 Hand 개체를 원하십니까? – SMA

+0

Hand 개체를 원한다면 루프에서 Hand 인스턴스를 만들고 Hand 개체의 인스턴스 변수 중 하나에 String 값을 설정 한 다음 Array/ArrayList에 손 개체를 설정하십시오. – Sid

+0

예 파일에서 개체를 가져온 다음 나중에 사용할 arraylist에 손을 넣습니다. – Thaitan

답변

0

카드는 랭크와 슈트의 쌍입니다. 핸드는 무엇

public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES } 
public enum Rank { 
    TWO("2"), THREE("3"),... JACK("J"), QUEEN("Q"), KING("K"), ACE("A"); 
    String rep; 
    Rank(String rep){ 
    this.rep = rep; 
    } 
    public getRep(){ 
    return rep; 
    }  
} 

public class Card { 
    private Rank rank; 
    private Suit suit; 
    public Card(Rank rank, Suit suit){ 
    this.rank = rank; 
    this.suit = suit; 
    } 
} 

는 게임에 의존하지만, Set<Card>를 포함하는 클래스는 단일 갑판으로 연주 게임을 잘 할 것입니다.

그리고 지금 : 카드를 읽는 방법? 그리고 갑판?

카드 표현은 텍스트 파일의 일련의 문자 인 "CLUBS 2" 일 수 있습니다. 스캐너를 사용하여 하나의 토큰 ("CLUBS", "2")을 얻은 다음 String 값을 enum 값으로 변환하십시오. (enum Rank에 누락 된 항목이 있습니다. 추가해야합니다.) 그러나 enum Suit는 간단합니다.

핸드는 위와 같이 읽고 Card 오브젝트의 시퀀스 일 뿐이며 Hand 오브젝트의 Set<Card>에 추가됩니다.

관련 문제