2017-07-09 6 views
1

で一緒に特定の単語を連結します数......番号\ nは 名前、番号、番号.....番号\ nはは、私はそうのようなテキストファイルがあると、私は問題を抱えている配列リスト

私はに各行に「名前+姓」または「名+ミドル+姓」を維持したいです1つの配列リストインデックス。 例として、配列リストの1つのインデックスの最初の行の "Name Surname"が必要です。

私は、文字列変数を使用し、2つの要素をループで一緒に追加しようとしました。しかし、あなたが見る通り、名前は実際には特定のタイプのものではありません。 どうすればいいですか?私は本当に助けに感謝します!

答えて

2

与えられた行を保持するという変数があるとします。この場合:

String namePart = line.substring(0, line.indexOf(",")); 
String dataPart = line.substring(line.IndexOf(",") + 1); 

これは、使い始めるのに役立ちます。

最初の行は、左の最初のカンマの部分をnamePartに割り当てます。 2行目は、1行目のコンマの部分をdataPartに割り当てます。もちろん、区切り記号としてコンマを使用してdataPartを分割し、配列などを作成し、関連する情報をアイテムセットの新しいエントリに追加する必要があります。

+1

これは1つです。名前がカンマ区切りではないことが何とか見逃していました。 –

+1

dataPartは 'line.substring(line.IndexOf("、 ")+ 1)'でなければなりません。それ以外の場合はデリミタそのものが含まれます –

+0

@SharonBenAsherそうです、それを指摘してくれてありがとう。 –

0

私は行を分割することをお勧め:

String[] parts = line.split(","); 

これはあなたにすべての部品との配列を与えます。 parts[0]には、名前と、後続のインデックスに続くすべての数字が格納されます。

1

私は上記の答えに言及したことをしました。しかし私はまた別のものをしました。

コード:

void readScore() { 
    int nextToken; 
    int numberOfTokens = 0; 
    String nameOfStudent = ""; 
    BufferedReader bufferedReader = null; 
    StreamTokenizer myToken; 

    // create a buffered stream to read from the file 
    try { 
     bufferedReader = new BufferedReader(new FileReader(new File(inputFileName))); 

    } catch (FileNotFoundException e) { 
     System.out.println(
       "File Not Found. Please add file in the proper directory or give the proper file path and execute"); 
     System.exit(1); // exit if file not found 
    } 
    myToken = new StreamTokenizer(bufferedReader); 
    myToken.eolIsSignificant(true); 

    try { 
     nextToken = myToken.nextToken(); 
     while (nextToken != StreamTokenizer.TT_EOF) { 
      if (nextToken == StreamTokenizer.TT_NUMBER) { 
       marks.add(myToken.nval); 
       numberOfTokens++; 
      } 
      if (nextToken == StreamTokenizer.TT_WORD) { 

       nameOfStudent += myToken.sval + " "; 
      } 
      if (nextToken == StreamTokenizer.TT_EOL) { 
       students.add(nameOfStudent); 
       nameOfStudent = ""; 
      } 
      nextToken = myToken.nextToken(); 

それは働きます!これが効率的かどうか私に教えてください。しかし、それは間違いなく機能します。

関連する問題