JAVA初心者です。
CSVデータ、10行、5列の最終行のみ数字データのものを
データクラス(About_book)に追加して表示させたいのですが、
for文で入るものは入るのが、入らないものはなぜか
入らないといった状況です。
その後、カプセル化を行いたいと思っております。
java public class Kad { public static void main(String[] args) { //インスタンスメソッド作成 Kad getbookInfo = new Kad(); List<String[]> input = getbookInfo.input_Data(); Kad readBook = new Kad(); List<String> outputData = new ArrayList<String>(); outputData = readBook.outputData(input); Kad displayData = new Kad(); displayData.displayBook(outputData); } private List<String[]> input_Data () { BufferedReader br = null ; String line = null ; List<String[]> input = new ArrayList<String[]>(); try{ InputStreamReader ORS = new InputStreamReader(new FileInputStream(CSV_TITLE), ENCODING); br = new BufferedReader(ORS); while((line = br.readLine()) != null ) { input.add(line.split(","+"\t",-1)); } return input ; } catch (FileNotFoundException e) { System.out.println(NOT_FOUND) ; } catch (IOException e) { System.out.println(IO_ERROR); } catch (Exception e) { System.out.println(ERROR); } finally { try { br.close(); } catch (Exception e) { System.out.println(ERROR); } } return null; } public List<String> outputData (List<String[]> input) { List<String> inputDataList = new ArrayList<String>(); for (String[] line_data : input) { for (int i =0 ; i < line_data.length ; i++) { inputDataList.add(line_data[i]); } } return inputDataList ; } private List<About_book> displayBook(List<String> outputDataList) { List<About_book> inputBookInfo = new ArrayList<About_book>(); for(String OutPut : outputDataList) { String [] input = OutPut.split(","); About_book about_book = new About_book(); for (int i = 0 ; i < input.length ; i++) { if (i == 0) { about_book.setTitle(BRACKET+input[i]+BRACKET_CLOSING); } if (i == 1) { about_book.setName(BRACKET+input[i]+BRACKET_CLOSING); } if (i == 2) { about_book.setStart(BRACKET+input[i]+BRACKET_CLOSING); } if (i == 3) { about_book.setEnd(BRACKET+input[i]+BRACKET_CLOSING); } if (i == 4 ) { about_book.setPrice(Integer.parseInt(input[i])); } inputBookInfo.add(new About_book()); } about_book.showBook(); } return inputBookInfo; } } class About_book { public String title; public String getTitle() { return this.title; } public void setTitle (String title) { this.title = title; } public String name; public String getName() { return this.name; } public void setName (String name) { this.name = name ; } public String start; public String getStart() { return this.start; } public void setStart (String start) { this.title = start; } public String end; public String getEnd() { return this.end; } public void setEnd (String end) { this.title = end; } public int price; public int getPrice() { return this.price; } public void setPrice(int price) { this.price = price ; } public void showBook() { System.out.println("題名:"+title+"、著者:"+name+"、販売開始:"+ start+ "、販売終了:" + end); } public void showPrice() { System.out.println(price); } } コード
なにがどういうふうに入らないんでしょうか。
意味不明ですよ
すみませんでした。
データクラスのタイトルは
if (i == 0) {
about_book.setTitle(BRACKET+input[i]+BRACKET_CLOSING);
としているのですが、全くよきせぬ インデックス番号が3や4が
i == 0 にひっかかっていまいます。
入力と出力も質問に書いてみてください。
発生していたのは、常に、題名に販売終了が表示され、販売開始と販売終了がnullとなる、ではないでしょうか?(当方の環境での確認事実)
インデックス番号が3や4の時に、i==0の処理に、println()での確認やブレークポイントでの停止は確認されておられますか?
質問には、事実と予想は明確に区別してご提示いただきますよう、お願いいたします。
なるほど!!!!
ご理解していただいたこと、また、
深く考えて頂いて本当にありがとうございます。
私自身1週間以上ここで詰まっていまして本当にお手上げしていて
親身になって解答していただきありがとうございます。
このように書き換えてもやはり同じ結果になってしまうのですが、
また、違うとこに問題があるのでしょうか?
public About_book(String outPut) {
// TODO 自動生成されたコンストラクター・スタブ
}
public String getTitle() {
return this.title;
}
public void setTitle (String title) {
this.title = title;
}
public String getName() {
return this.name;
}
public void setName (String name) {
title = name ;
}
public String getStart() {
return this.start;
}
public void setStart (String start) {
title = start;
}
public String getEnd() {
return this.end;
}
public void setEnd (String end) {
title = end;
}
public int getPrice() {
return this.price;
}
public void setPrice(int price) {
this.price = price ;
}
回答3件
あなたの回答
tips
プレビュー