0

以下のこのテキスト ファイルは、Person オブジェクトとは何かのコレクションです...この person オブジェクトには名前と電話番号があります


ジルニム # 9090092323アラディン # 4243535345 デファイ
ダック # 4354656575

プログラムが使用するためにこのファイルを復元しようとしていますが、これらの文字列を分割して個人インスタンスに渡す方法がわかりません

Person s = new Person( String Name, String phonenumber);

これらの名前と番号を渡して、人の新しいインスタンスを作成するにはどうすればよいですか。

   public void restore(String fileName) {
       // TODO : implement this method.
       // restore bst from a file, if file exists.
       // do nothing, otherwise.
       File fichier = new File(fileName);
            if (fichier.exists())

                try {
                    Scanner n = new Scanner(new File(fileName));

                        while(n.hasNextLine()){     
                            Person s = new Person( n.nextLine(), n.next(pattern));
                        }       
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
4

4 に答える 4

3

String クラスにはsplitメソッドがあります。

nextLine()「#」であなたを分割します。つまり、あなたが名前になり、電話番号になるnextLine().split("#")文字列の配列を取得します。次に、コンストラクターを呼び出すことができます(トリムは、分割後に余分なスペースを取り除くことです)array[0]array[1]new Person(array[0].trim(), array[1].trim())

于 2013-11-11T03:05:25.917 に答える
2

を使用できますsplit()が、この状況ではまったく不要です。あなたの場合、.substring()andindexOf()を使用するだけで済みます。これを行う方法は次のとおりです。

String fromFile = "jill nim # 9090092323";
Person s = new Person(fromFile.substring(0, fromFile.indexOf('#') -1), 
                      fromFile.substring(fromfile.indexOf('#') + 2);

を使用.split()すると、配列が作成されるだけでなく、Patternオブジェクトも作成されますが、どちらも不要です。

于 2013-11-11T03:05:40.760 に答える
2

次のような場合のユーザーStringTokenizer :

String foo = "foo # 1234";

StringTokenizer sr =  new StringTokenizer(foo,"#");

while(sr.hasMoreElements())
{
System.out.println(sr.nextElement());
}
于 2013-11-11T03:18:30.623 に答える
1

ただ使うsplit("#");

String line = line.nextLine();

String[] tokens = line.split("#");

String name = tokens[0].trim();

String phone = tokens[1].trim();

Person s = new Person(name, phone);
于 2013-11-11T03:06:41.827 に答える