0

すべての情報をtxtファイルから配列にコピーする必要があるプロジェクトを行っています。txt の内容を以下に示します。ここで必要なのは、すべての商品名と説明をそれぞれ配列に取得したいということです。

GoodTitle        Description            
    Gold       The shiny stuff
    Wheat   What wheaties are made of
    Wood    To make more ships
    Spices  To disguise the taste of rotten food
    Tobacco Smoko time
    Coal    To make them steam ships go
    Coffee  Wakes you up
    Tea Calms you down

私がこれまでに行ったこと:

public void openFile()
    {
        ArrayList <String> ShippingTokens = new ArrayList<String>();
        try{
            FileInputStream fstream = new FileInputStream("D://Shipping.txt");
            // Use DataInputStream to read binary NOT text.
                    BufferedReader br = new BufferedReader (new InputStreamReader (fstream));
            String strline;
            while ((strline = br.readLine()) != null){ 
                strline = strline.trim();

            if ((strline.length()!=0)) {
                String[] Shippings = strline.split("//s+");
                ShippingTokens.add(Shippings[TOKEN_COLUMN]);
            }

        }

        for (String s : ShippingTokens) {
            System.out.println(s);
        }

        in.close();
        } catch (Exception e){
            System.err.println("Error");
        }

    }
4

3 に答える 3

0

考えられる解決策の 1 つは、最初に文字列の最初の単語を読み取り、それを配列に格納することです。次に、おそらく行の残りを保存したいと思うでしょう。これはさまざまな方法で実行できます。考えられる解決策の 1 つは、行全体を読み取り、最初の単語を GoodTitle として保存し、最初の単語を削除して残りの文字列を説明として保存することです。Java で BufferedReaders がどのように機能するかはよくわかりません。

代わりにスキャナーの使用を検討することをお勧めします。 http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

これには、おそらくソリューションを容易にする next() や nextLine() などのメソッドが付属しています。

これを配列に保存しますか? GoodTitle をキーとして HashMap に情報を格納する方がおそらく理にかなっています。

于 2013-10-24T09:16:37.350 に答える
0

クラスで TOKEN_COLUMN を定義したことを確認してください。

 ShippingTokens.add(Shippings[TOKEN_COLUMN]);

あなたの場合、TOKEN_COLUMN value is 0 あなたの出力は以下のようになります。

GoodTitle   
Gold
Wheat
Wood
Spices
Tobacco
Coal
Coffee
Tea
于 2013-10-24T09:13:03.120 に答える