
お世話になっております。
現在テキストファイルを読み込み、それを表示する機能を作成しております。
単純に表示するだけでしたら作成できたのですが、後ほど応用したいので、下記のテキストファイルのデータを、名前なら「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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Ruby 教えてください 2 2023/01/04 17:50
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
九九を横に表示する。
-
テキストファイルから空白行をよむ
-
JAVAでエラーがでる。
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
大きな容量のファイルを転送する
-
テキストファイルにおいて任意...
-
BufferedReader.readline()で読...
-
eclipseでmysqlからテーブル情...
-
linuxでapache poiが動かない。
-
System.err. printlnとSystem.o...
-
C言語のポインターに関する警告
-
1~100までの数字を表示したい
-
ORA-01858: 数値を指定する箇所...
-
Javaで文字と数字が混ざったも...
-
一定のスペースを空けて端を揃...
-
動的配列が存在(要素が有る)か...
-
Javaで改行などが出来ないのです。
-
変数を動的に利用するには?
-
IF関数でEmpty値を設定する方法。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
テキストファイルから空白行をよむ
-
csv出力について
-
InputStream.read()でタイムア...
-
Java int sum = 0は必要ですか?
-
FileクラスのcanRead/canWrite...
-
Class.forNameでエラーになる
-
BufferedReaderでのエラー
-
equalsの逆
-
Javaでデータに登録する度にID...
-
ProcessBuilderを使用して、対...
-
テキストファイルの任意の文字...
-
Javaの質問です。テキストファ...
-
JAVAでエラーがでる。
-
java連結
-
[JAVA]エラーが解決できません。
-
九九を横に表示する。
-
javaからffmpegの利用
-
Java FileDialog に関して
-
JavamailでGmailのお気に入りフ...
おすすめ情報