将文本文件读入对象的对象数组?

时间:2014-12-28 16:54:08

标签: java arrays object bufferedreader readfile

有没有办法将文本文件读入对象数组?我已经设法使用字符串的对象数组来做到这一点 - 但我无法弄清楚如何使用对象的对象数组来完成它。即一个Hand对象的卡阵列。这是我的代码;

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

通过上面的代码,我可以看到iv出错的地方,但我无法弄清楚如何修复它。我试图使用lineHand类型Hand而不是字符串,但后来我遇到了使用buf.readline()的问题。关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分: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",即文本文件中的一系列字符。使用扫描仪在另一个之后获取一个令牌(&#34; CLUBS&#34;,&#34; 2&#34;)并将String值转换为枚举值。 (enum Rank中缺少某些内容,您必须添加这些内容。)但它对于枚举套装来说非常简单。

至于Hand:那只是一系列Card对象,如上所述并添加到Hand对象的Set<Card>