
お世話になっております。
現在テキストファイルを読み込み、それを表示する機能を作成しております。
単純に表示するだけでしたら作成できたのですが、後ほど応用したいので、下記のテキストファイルのデータを、名前なら「name」に、職業なら「job」に、性別なら「sex」にといったように、1行ずつ読み取ってそれぞれの配列に入れたいのですが、自分なりに調べてみたり、試したのですが、1つの配列に入れるのが精一杯で、分かりませんでした。
どなたかお力をお貸しください。よろしく御願い致します。
---------------------------//テキストファイル
田中
医者
男性
大林
SE
女性
---------------------------
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
class yomikomi{
public static void main(String args[]){
ArrayList<String> list = new ArrayList<String>();
int i=0;
try{
File file = new File("sample.txt");
if (checkBeforeReadfile(file)){
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
i=0;
while((line = br.readLine()) != null){
System.out.println(line);
list[i]=line;
i = i +1;
}
br.close();
}else{
System.out.println("ファイルが見つからないか開けません");
}
}catch(FileNotFoundException e){
System.out.println(e);
}catch(IOException e){
System.out.println(e);
}
}
private static boolean checkBeforeReadfile(File file){
if (file.exists()){
if (file.isFile() && file.canRead()){
return true;
}
}
return false;
}
}
No.1ベストアンサー
- 回答日時:
javaの文法はよく知らないので細かいところは間違っているかもしれませんが……
データの種別を表す変数cateを用意して、その値に応じて代入する配列を変えれば良いのではないでしょうか。
----------------------
ArrayList<String> name = new ArrayList<String>();
ArrayList<String> job = new ArrayList<String>();
ArrayList<String> sex = new ArrayList<String>();
int i = 0;
int cate= 0; //カテゴリ 0:name 1:job 2:sex
String line = null;
i=0; // ここは、上で0に初期化してますよ。
while((line = br.readLine()) != null){
System.out.println(line);
switch(cate){
case 0:
name[i] = line;
break;
case 1:
job[i] = line;
break;
case 2:
sex[i] = line;
break;
}
i = i +1;
cate = cate + 1;
if(cate > 2) cate = 0;
}
No.2
- 回答日時:
ファイルの形式がはっきりしないので、調整は必要ですが。
「1行ずつ」でループするのではなく「一人ずつ」でループする方法もあります。
while(true)){ // 無限ループにしておく
名前の行読み込み→読み込めなかったらbreak
職業の行読み込み→読み込めなかったらbreak
...
name[i]=名前
job[i]=職業
...
i ++ ;
空行読み込み→読み込めなかったらbreak
}
あと
> 名前なら「name」に(略)それぞれの配列に入れたい
ということですけど、そういうときは、適当なクラス(Personクラスとか)を作って、name,job,sex...のフィールドを作るのが常套手段です。
別の配列では扱いが面倒です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
InputStream.read()でタイムア...
-
equalsの逆
-
JAVAでエラーがでる。
-
以下のJAVAプログラムでご質問...
-
java連結
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
JavaScriptの変数をjavaのメソ...
-
ORA-01858: 数値を指定する箇所...
-
VBAで配列の計算
-
javaで質問です。 文字列2023/2...
-
JScrollPaneで、表示がおかしく...
-
JavaScriptを使ってロト6の当...
-
streamで送信されたArrayListを...
-
JavaScriptとVBScriptに関して
-
IF関数でEmpty値を設定する方法。
-
動的配列が存在(要素が有る)か...
-
ループ処理の際、最後だけ","を...
-
オブジェクトの中のプロパティ...
-
1~100までの数字を表示したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
csv出力について
-
yyyymmddからyyyy/mm/d...
-
テキストファイルから空白行をよむ
-
BufferedReaderでのエラー
-
Javaの質問です。テキストファ...
-
equalsの逆
-
戻り値を使用する呼出
-
JAVAでエラーがでる。
-
FileクラスのcanRead/canWrite...
-
Java 出席状況を表す文字列から...
-
Javaでデータに登録する度にID...
-
ファイルの読み飛ばしが出来ま...
-
九九を横に表示する。
-
javaのfor文が機能してないみた...
-
Javaの質問です。テキストファ...
-
Servletでテキストボックスに入...
-
java連結
-
java.lang.NoClassDefFoundErro...
-
拡張子の読み込み制限を設けた...
-
[JAVA]エラーが解決できません。
おすすめ情報