1

私はJavaについてもっと理解するのを助けるために自己プロジェクトをやっています.しかし、私はこの質問に行き詰まっています. 次のtxtファイルがあります:

Name  Hobby 
Susy  eat fish 
Anna  gardening
Billy bowling with friends

すべての行を読み取り、それを arraylist(name,hobby) に入れる最良の方法は何ですか。しかし、トリッキーな部分は

魚を食べたり、友達とボーリングしたり

空白があり、1 つの配列の下に配置する必要があり、明らかにハードコードできません。ここに私の現在のコードがあります

public void openFile(){
    try{
        x = new Scanner(new File("D://practice.txt"));
    }catch (Exception e){
        System.out.println("File could not be found");
    }
}

public void readFile(){
    while (x.hasNextLine()){
        x.nextLine();
        if (x.hasNext()){
            listL.add(x.next());
        } else {
            listL.add("");
        }

        if (x.hasNext()){
            listR.add(x.next());
        } else {
            listR.add("");
        }
    }
}

よろしくお願いします... note = 1.趣味と名前はスペースで区切ります 2.名前は 1 語のみです

4

2 に答える 2

0

の代わりに、次のscanner.next()ようなことをしたいかもしれません:

Scanner scan = new Scanner(new File("D://practice.txt"));
ArrayList<String> names = new ArrayList<String>();
ArrayList<String> hobbies = new ArrayList<String>();

while(scan.hasNext()){
    String curLine = scan.nextLine();
    int indexOfHobby = curLine.indexOf(' ');
    names.add(curLine.substring(0, indexOfHobby).trim());
    hobbies.add(curLine.substring(indexOfHobby).trim());
}

これに関する 1 つの問題は、2 つの s の間に関係がないことArrayListです。そのため、繰り返し処理を行う際には必ずインデックスに注意する必要があります。これを修正する 1 つの方法は、Personクラスを追加して、の属性としてnameandを持ち、次にof を持てるようにすることです。それは次のようになります。hobbyPersonArrayListPerson

Class Person {
    String name;
    String hobby;

    public Person(String name, String hobby){
        this.name = name;
        this.hobby= hobby;
    }
    // more methods here
}

次に、メイン クラスで次のようにします。

Scanner scan = new Scanner(new File("D://practice.txt"));
ArrayList<Person> people= new ArrayList<Person>();

while(scan.hasNext()){
    String curLine = scan.nextLine();
    int indexOfHobby = curLine.indexOf(' ');
    people.add(new Person(curLine.substring(0, indexOfHobby).trim(), curLine.substring(indexOfHobby).trim() ));
}
于 2013-10-24T18:06:07.343 に答える