2016-09-13 7 views
-3

アイブ氏の解析:その上は、次のように構成され、複数行のファイルを解析するために、複数行のファイル

Name Surname 
birthdate(int) 
Name Surname 
birthdate(int) 

とを。私は、ファイルを開いて、ArrayListを取得し、データ構造として機能するクラスを作成しましたが、私は各文字列を解析する方法を知らない、数字か名前かどうかを認識します。手伝って頂けますか?

+0

ファイルにはこれが含まれていますか、それとも単なる表現ですか? – joc

+0

これは単なる表象です。 "名前"、 "姓"、 "生年月日"は、名前、姓、生年月日によって異なります。 – lucad93

+0

正規表現を使用して一致を確認します(例: 'birthdate(\ d +)'は、グループ内の数値を取得し(式が一致する場合)、それを解析するだけです。それ以外にも、ファイルの構造を知っているので、構文解析ロジックを思いつく必要があります。あなたの質問は非常に曖昧なので、助けが難しいです。 – Thomas

答えて

0

私は推測する、これが主な関心事である:

私はそれが数 または名前であれば認識し、それぞれの文字列を解析する方法がわかりません。

あなたは数に値を解析したり、文字列としてそれを残すことができるかどうかを確認するために使用isNumeric()機能。次に、関数の戻り値をaccordindで解析します。

public static boolean isNumeric(String str) { 
    try { 
     double d = Double.parseDouble(str); 
    } catch(NumberFormatException nfe) { 
     return false; 
    } 
    return true; 
} 

...

//put data into ArrayList 
for (int i = 0; i < data.size(); i++) { 
    String elem = data.get(i); 
    boolean isNum = isNumeric(elem); 
    if (isNum) { 
     int val = Integer.parseInt(elem); 
    } else { 
     //do what you want with `elem` 
    } 
} 
0

あなたはあなたのファイル

を読むためにjava.util.Scannerクラスを使用することができますそれはあなたが入力されたデータの構造を知っていれば、入力の様々なタイプを読み取るためのヘルパーメソッドを持っています(I

ここに、特定の構造を持つファイルから読み込むためのサンプルコードを示します。

Scanner s = new Scanner(new File("input.txt")); 

    while(s.hasNext()) { 
     System.out.println("First Name : " + s.next() + ", Last Name : " + s.next() + ", Age : " +s.nextInt()); 
    } 
    s.close(); 

あなたは、属性のfirstName、lastNameの年齢でクラスを作成し、新しいオブジェクトに上記の値を代入し、一覧でそのオブジェクトを追加することができます。

これが役に立ちます。

関連する問題