0

こんにちは、Java でコードを書く必要があるこのプロジェクトがあります。この 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

私がやりたいのは、テキストの左側 (goodtitle、gold、wheat、wood など) を配列リストに入れ、テキストの右側 (説明、光沢のあるもの) を別の配列リストに入れることだけです。これは私の現在のコードです:

public void openFile(){
        try{
            x = new Scanner(new File("D://Shipping.txt"));
        }
        catch (Exception e){
            System.out.println("File could not be found");
        }
    }
    public void readFile(){
    while (x.hasNextLine()){
        String a = x.next();
        x.nextLine();
        ArrayList<String> list = new ArrayList<String>();
        while (x.hasNext()){
            list.add(x.next());
        }
        System.out.printf("%s \n", list);
        }
    }
    public void closeFile(){
        x.close();

私はまだそれを行う方法について混乱しているので、おそらく readFile にいくつかの変更が必要です。前もって感謝します...

NOTE=I am not allowed to change the content of the txt file. 
     in my current code i still put the whole thing into 1 arraylist because i am unable to split them.

toString メソッドが必要ですか?方法がわからないためです。前もって感謝します...

4

2 に答える 2

0

を使用する場合はMap<String, String>、おそらく次のようなものを試すことができます。

public static Map<String, String> getContents() throws IOException {
    final Map<String, String> content = new HashMap<>();
    final Scanner reader = new Scanner(new File("D://Shipping.txt"), "UTF-8");
    while(reader.hasNextLine()){
        final String line = reader.nextLine();
        final String[] split = line.split(" +");
        content.put(split[0], split[1]);
    }
    reader.close();
    return content;
}

public static void main(String args[]) throws IOException{
    final Map<String, String> content = getContents();
    content.keySet().forEach(k -> System.out.printf("%s -> %s\n", k, content.get(k)));
}

このソリューションは Java 8 を使用してプログラムされていることに注意してください。より低い JDK レベルに変更できることは間違いありません。

于 2013-10-17T19:11:05.510 に答える