如何将从CSV读入的数据存储到集合

时间:2016-11-22 20:32:32

标签: java arrays list netbeans collections

我的任务是创建一个名为Taboo的游戏。它由一个主要词和3个禁止词组成。游戏的目的是在屏幕上显示单词,然后用户必须在不使用单词本身或禁止单词的情况下描述主单词。

到目前为止,我已经能够读取我存储在CSV中的数据了,并且当我选择输出BannedWords时,它会这样做。现在的问题是,当它输出MainWord或BannedWord1等时......它输出CSV中每条记录的数据。

以下是我的CSV中的数据(这只是一个记录很少的测试,所以当它工作时我可以介绍其余的。)

树,棕色,绿色,自然

淀,蓝,水,湿

苹果,绿,水果,健康

如果我选择输出MainWord,这是第一个单词,它输出如下:

苹果

我需要以某种方式将正在读取的数据从单独存储到集合中,以便在我需要使用它们时,它们输出正确并且它们以我可以显示的方式输出他们稍后在GUI JLabel中。

注意我使用NetBeans也很有用,所以我也可以使用任何内置函数。

public class Card 
{
    private String sMainWord;
    private String sBannedWord1;
    private String sBannedWord2;
    private String sBannedWord3;

    public Card(String sMW, String sBW1, String sBW2,String sBW3)
    {
        sMainWord = sMW;
        sBannedWord1 = sBW1;
        sBannedWord2 = sBW2;
        sBannedWord3 = sBW3;
    }

    public void setsMainWord(String sMW)
    {
        sMainWord = sMW;
    }

    public String getsMainWord()
    {
        return sMainWord;
    }

    public void setsBannedWord1(String sBW1)
    {
        sBannedWord1 = sBW1;
    }

    public String getsBannedWord1()
    {
        return sBannedWord1;
    }

    public void setsBannedWord2(String sBW2)
    {
       sBannedWord2 = sBW2; 
    }

    public String getsBannedWord2()
    {
        return sBannedWord2;
    }

    public void setsBannedWord3(String sBW3)
    {
        sBannedWord3 = sBW3;
    }

    public String getsBannedWord3()
    {
        return sBannedWord3;
    }

    public static void main(String[] args) throws FileNotFoundException 
    {
        String fileNameDefined = "/Users/student/NetBeansProjects/TabooGameComplete/CSData.csv";
        File file = new File(fileNameDefined);

         try
        {
            Scanner inputStream = new Scanner(file);


            while(inputStream.hasNext() != false)
            {

                String TabooCardWords = inputStream.nextLine();
                String[] information = TabooCardWords.split(",");

                String MainWord = information[0];
                String BannedWord1 = information[1];
                String BannedWord2 = information[2];
                String BannedWord3 = information[3];

                Card TBC = new Card (MainWord, BannedWord1, BannedWord2, BannedWord3);


                System.out.println("*" + BannedWord1 + "*");
            }


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

1 个答案:

答案 0 :(得分:0)

您正在生成In [191]: t Out[191]: array(['2016-07-28', '2016-08-25', '2016-09-29', '2016-10-27', '2016-11-17'], dtype='datetime64[D]') In [192]: (t[:,None] + np.arange(-1,2)).ravel() Out[192]: array(['2016-07-27', '2016-07-28', '2016-07-29', '2016-08-24', '2016-08-25', '2016-08-26', '2016-09-28', '2016-09-29', '2016-09-30', '2016-10-26', '2016-10-27', '2016-10-28', '2016-11-16', '2016-11-17', '2016-11-18'], dtype='datetime64[D]') In [193]: (t[:,None] + [-1,0,1]).ravel() Out[193]: array(['2016-07-27', '2016-07-28', '2016-07-29', '2016-08-24', '2016-08-25', '2016-08-26', '2016-09-28', '2016-09-29', '2016-09-30', '2016-10-26', '2016-10-27', '2016-10-28', '2016-11-16', '2016-11-17', '2016-11-18'], dtype='datetime64[D]') 的循环中执行输出语句,这样每次创建卡时,您都会输出其Card。当你一个接一个地创造它们时,它们将一个接一个地输出。

BannedWord1

如果要输出一个//For each line in file while(inputStream.hasNext() != false) { //Create Card //Output BannedWord1 used to create Card } 的一个元素,则需要保持您创建的Card个对象在循环外使用: -

Card

附加点

按照惯例,java变量以小写字母和带大写的类开头,因此这可能会令人困惑

Card[] cards = new Cards[3];
int i=0;
//For each line in file
while(inputStream.hasNext() != false)
{
  //Create Card
  cards[i++] = newlyCreatedCardObject;  //Store card object for later
  //Output BannedWord1 used to create Card
}

//Output BannedWord1 from the Card created from the second line
System.out.println(cards[1].getsBannedWord1());