はじめに
初めてこちらで質問させていただきます。
よろしくお願いします。
前提・実現したいこと
テキストファイルを読み込み、指定の文字列を抜き出す
→いったんリストに保存し、読み込みが終了した後まとめて表示する
発生している問題・エラーメッセージ
エラーは発生していないが、コンソールに何も表示されない
→ファイルを読み込めていない?
該当のソースコード
Java
1import java.io.BufferedReader; 2import java.io.FileReader; 3import java.text.SimpleDateFormat; 4import java.util.ArrayList; 5import java.util.Date; 6import java.util.List; 7import java.util.Locale; 8 9public class Company { 10 11 public static void main(String[] args) throws Exception{ 12 13 //CompanyDataクラスのインスタンス化 14 CompanyData companyData = new CompanyData(); 15 16 //変数の設定 17 BufferedReader br = null; 18 String line; 19 int indexCompanyName,indexCeoName,indexEstablishmentDay; 20 int startIndex,endIndex; 21 String companyName,ceoName,establishmentDay; 22 23 //リストの設定 24 List <CompanyData> companyInfo = new ArrayList <CompanyData>(); 25 26 //ファイルの読み込み 27 br = new BufferedReader(new FileReader("C:\test.txt")); 28 29 30 while((line = br.readLine()) != null) { 31 32 //行に対象文字が存在するか 33 if(line.contains(ConstantObjects.MARK_COMPANY) 34 || line.contains(ConstantObjects.MARK_CEO) 35 || line.contains(ConstantObjects.MARK_ESTABLISHMENT_DAY)) 36 { 37 //出現位置の取得 38 indexCompanyName = line.indexOf(ConstantObjects.MARK_COMPANY); 39 indexCeoName = line.indexOf(ConstantObjects.MARK_CEO); 40 indexEstablishmentDay = line.indexOf(ConstantObjects.MARK_ESTABLISHMENT_DAY); 41 42 //対象文字列の取得 43 startIndex = indexCompanyName + (ConstantObjects.MARK_COMPANY).length(); 44 endIndex = line.indexOf(" ",indexCompanyName); 45 companyName = line.substring(startIndex, endIndex); 46 47 48 startIndex = indexCeoName + (ConstantObjects.MARK_CEO).length(); 49 endIndex = line.indexOf(" ",indexCeoName); 50 ceoName = line.substring(startIndex,endIndex); 51 52 53 startIndex = indexEstablishmentDay + (ConstantObjects.MARK_ESTABLISHMENT_DAY).length(); 54 endIndex = line.indexOf(" ",indexEstablishmentDay); 55 establishmentDay = line.substring(startIndex,endIndex); 56 57 //companyName,ceoNameをセット 58 companyData.setCompanyName(companyName); 59 companyData.setCeoName(ceoName); 60 61 //西暦→和暦に変換 62 SimpleDateFormat sdfENG = new SimpleDateFormat("yyyy年M月d日",Locale.ENGLISH); 63 Date date = sdfENG.parse(establishmentDay); 64 String establishmentDayJP = new SimpleDateFormat("GGGGyyyy年M月d日",new Locale("ja","JP","JP")).format(date); 65 66 //establishmentDayJPをセット 67 companyData.setEstablishmentDay(establishmentDayJP); 68 69 //リストへ格納 70 companyInfo.add(companyData); 71 } 72 } 73 74 for(CompanyData outputInfo:companyInfo) { 75 outputInfo.showCompanyProfile(); 76 } 77 78 br.close(); 79 } 80} 81
Java
1 2public class CompanyData { 3 4 5 private String companyName; 6 private String ceoName; 7 private String establishmentDay; 8 9 //companyNameのgetter,setterを設定 10 public String getCompanyName() { 11 return this.companyName; 12 } 13 14 public void setCompanyName(String companyName) { 15 this.companyName = companyName; 16 } 17 18 //ceoNameのgetter,setterを設定 19 public String getCeoName() { 20 return this.ceoName; 21 } 22 23 public void setCeoName(String ceoName) { 24 this.ceoName = ceoName; 25 } 26 27 28 //establishmentDayのgetter,setterを設定 29 public String getEstablishmentDay() { 30 return this.establishmentDay; 31 } 32 33 public void setEstablishmentDay(String establishmentDay) { 34 this.establishmentDay = establishmentDay; 35 } 36 37 //保存した値の表示メソッド 38 public void showCompanyProfile() { 39 System.out.println("会社名 " + getCompanyName()); 40 System.out.println("代表取締役" + getCeoName()); 41 System.out.println("設立日 " + getEstablishmentDay()); 42 } 43 44} 45
Java
1 2public class ConstantObjects { 3 4 //固定値 5 static String MARK_COMPANY = "会社名"; 6 static String MARK_CEO = "代表取締役"; 7 static String MARK_ESTABLISHMENT_DAY = "設立日"; 8} 9
試したこと
リストに保存されていない?
→保存せずに直接表示させようと試みるも表示されず
終わりに
最後までご覧いただきありがとうございます。
何か気づいた点ございましたらコメントいただければ幸いです!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/13 03:15
2018/06/13 03:27
2018/06/13 03:35
2018/06/13 03:41
2018/06/13 04:04
2018/06/13 04:10
2018/06/13 04:27