• 締切済み

JAVA・CSVファイルへの出力について

お初です<m(__)m> JAVAを最近習い始めてるのですが、早くも詰まってしまいました 汗 CSVファイルを読み込み計算し、不正な値(0やマイナスなどの自然数でない値) と正の値をそれぞれのCSVファイルへ分けて表示させたいのですが、正の値は 表示できたのですが、もう一つの不正な値が表示できません。 上部に1行しか表示されなくて困ってしまっています(^_^;) どなたか分かる方いませんか?

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

計算過程を省略した、シンプルな構造を考えては? 入力ファイルに値[A]と値[B]を複数個用意して、Aだけの出力・Bだけの出力を考える。 出力ファイルは2本同時に開いてあるのかな?

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2

#1です。 > 項目ごとにカンマで区切り、エクセル表にして表示させたいという事です。 だから、CSVはテキストファイルだって言ったでしょ? どうやって画像を書き出してるの? > 上部に1行しか表示されなくて 現状はどういうコードになってるの? 「上部」ってどこ?

asidanomanachan
質問者

補足

すみません、ソースコードはこのようになっています。 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; class Data1 { double value; Data1(double value) { this.value = value; } void setData1(double value) { this.value = value; } public String toString() { return String.format("%5.1f", value); } } class Statistics { Data1 min = new Data1(999.9); Data1 max = new Data1(0.0); double total = 0.0; void add(double value) { if (min.value > value) { min.setData1(value); } if (max.value < value) { max.setData1(value); } total += value; } } class Category1 { String Category1; Statistics height = new Statistics(); Statistics weight = new Statistics(); Statistics bmi = new Statistics(); int num = 0; Category1(String Category1) { this.Category1 = Category1; } void add(double height, double weight) { this.height.add(height); this.weight.add(weight); this.bmi.add(weight / (height / 100.0 * height / 100.0)); num++; } public String toString() { return Category1 + "," + "身長" + "," + "最高" + "," + height.max + "\n" + Category1 + "," + "身長" + "," + "最低" + "," + height.min + "," + "\n" + Category1 + "," + "身長" + "," + "平均" + "," + String.format("%5.1f\n", height.total / num) + Category1 + "," + "体重" + "," + "最高" + "," + weight.max + "," + "\n" + Category1 + "," + "体重" + "," + "最低" + "," + weight.min + "\n" + Category1 + "," + "体重" + "," + "平均" + "," + String.format("%5.1f\n", weight.total / num) + Category1 + "," + "BMI" + "," + "最高" + "," + bmi.max + "\n" + Category1 + "," + "BMI" + "," + "最低" + "," + bmi.min + "\n" + Category1 + "," + "BMI" + "," + "平均" + "," + String.format("%5.1f\n", bmi.total / num); } } class Health1 { Category1 male = new Category1("男"); Category1 famale = new Category1("女"); Category1 total = new Category1("全体"); void add(String sex, double height, double weight) { if (sex.equals("男")) { male.add(height, weight); } else { famale.add(height, weight); } total.add(height, weight); } public String toString() { return "" + male + "\n" + famale + "\n" + total + "\n"; } } public class kadai { static final String FILENAME = "src/main/java/*********/co/jp/身長体重.csv"; static final String SEPARATOR = ","; static final int SEX = 2, HEIGHT = 3, WEIGHT = 4; public static void main(String[] args) throws Exception { Health1 Health1 = new Health1(); String line; BufferedReader file = new BufferedReader(new FileReader(FILENAME)); for (int number = 1; (line = file.readLine()) != null; number++) { String[] item = line.split(SEPARATOR); String f = "不明"; try { if (Integer.parseInt(item[HEIGHT]) <= 0 || Integer.parseInt(item[WEIGHT]) <= 0 || item[SEX] == null || item[HEIGHT] == null || item[WEIGHT] == null) { if (item[SEX] != f) { System.out.printf("Invalid Data1 at line %d: %s\n", number, line); PrintWriter pw = new PrintWriter( new BufferedWriter( new FileWriter( "src/main/java/*********/co/jp/operror.csv"))); pw.println(number + "," + line); pw.close(); Health1.add(item[SEX], Double.parseDouble(item[HEIGHT]), Double.parseDouble(item[WEIGHT])); } } } catch (Exception e) { } } file.close(); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter( "src/main/java/*********/co/jp/output.csv"))); pw.println(Health1); pw.close(); } } >「上部」ってどこ? すみません↑は忘れてください 汗

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

> それぞれのCSVファイルへ分けて表示させたい CSVファイルへ表示って? > どなたか分かる方いませんか? じゃあ、現行どうやっているかくらいは書きましょうよ。 どこが悪いか想像してもしょうがないでしょ?

asidanomanachan
質問者

補足

>CSVファイルへ表示って? 項目ごとにカンマで区切り、エクセル表にして表示させたいという事です。 なので事前に別名の空のCSVファイルを配置しています。

関連するQ&A