初めて質問するので、書き方が違いましたらすみません…
javaで指定の行を取り出したいです。
今できているところは
•csvファイルをJavaに読み込む
•csvファイルの中身は全て数値で、それらを配列に入れ込んだ
•結果をcsvファイルに出力する準備はできている
までで問題の中身なのですが、やりたいこととしては、
自分がコマンドで入力する数字と同じ行を持ってきてcsvファイルに入れ込みたいです。
(2 5 と入力したら2行目と5行目を取り出したいです。)
今書き終わっているところまでを貼ります。
教えて頂けないでしょうか?お願い致します。
java
1import java.io.BufferedReader; 2import java.io.BufferedWriter; 3import java.io.File; 4import java.io.FileNotFoundException; 5import java.io.FileOutputStream; 6import java.io.FileReader; 7import java.io.IOException; 8import java.io.OutputStreamWriter; 9import java.io.PrintWriter; 10import java.util.Scanner; 11 12public class aaa { 13 14 public static void main(String[] args) { 15 16 double[][] Data; 17 double[][] kekkaData; 18 String line; 19 int a = 0; 20 int b = 0; 21 int N = 0; 22 int h = 0; 23 int tate = 2443;//csvの列数 24 int yoko = 2334;//csvの行数 25 int hosii = 40;//取ってきたい行数の合計 26 27 // データ格納 28 try { 29 File infile = new File("D:\Book3.csv"); 30 BufferedReader br = new BufferedReader(new FileReader(infile)); 31 32 while ((line = br.readLine()) != null) { 33 N++; 34 } 35 br.close(); 36 } catch (FileNotFoundException e) { 37 System.out.println(e); 38 } catch (IOException e) { 39 System.out.println(e); 40 } 41 Data = new double[tate][yoko]; 42 kekkaData = new double[hosii][yoko]; 43 44 45 try { 46 File infile = new File("D:\Book3.csv"); 47 BufferedReader br2 = new BufferedReader(new FileReader(infile)); 48 File outfile = new File("D:\normdist_結果3.csv"); 49 PrintWriter bw = new PrintWriter( 50 new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outfile), "Shift-JIS"))); 51 while ((line = br2.readLine()) != null) { 52 for (b = 0; b < yoko; b++) { 53 String str[] = line.split(",", 0); 54 Data[a][b] = Double.valueOf(str[b]); 55 56 } 57 a++; 58 } 59 br2.close(); 60 61 62 63//追加ここから 64 Scanner scanner=new Scanner(System.in); 65 int v = scanner.nextInt(); 66 System.out.println("抜き出したい行数は?"+v); 67 68 for (int i = 1; i < tate+1; i++) { 69 if( v == i){ 70 for (int j = 0; j < 1; j++) { 71 System.out.println(kekkaData[i][j] + " , "); 72 bw.write((kekkaData[i][j]) + ","); 73 } 74 System.out.println(); 75 bw.write("\r\n"); 76 77 } 78 } 79 80 bw.close(); 81 } catch (FileNotFoundException e) { 82 System.out.println(e); 83 } catch (IOException e) { 84 System.out.println(e); 85 } 86 } 87}
コードのご提示には専用の書き方が用意されています. 入力枠の上辺にある <code> を押すと出てくる ``` で囲まれた「コード」という文字列を置き換える形で, コードを書き込み(コピペ)してください.
ご質問は編集できます. 入力枠の下にはプレビューも表示されますので, 確認しながら修正してみて頂けますか.
教えて頂きありがとうございます。書き方を変更いたしました。
もしよろしければ、このJavaについてのご回答を頂けると嬉しいです。お願い致します。
> 2 5 と入力したら
入力部分がありません. これも作ってくれということでしょうか.
> int tate = 2443;//csvの列数
> int yoko = 2334;//csvの行数
行・列数を固定にしていますが, コード内には行数を数えている個所もあります. 行数は固定でしょうか可変でしょうか.
すいません, コマンドで入力するということは args のことでしょうか.
行数は固定です。
コマンドに入力するという表記で合っているのかが分からないのですが、「抜き出したい行数は?」と聞いて
2
5
と入力すると2、5行目が抜き出せるようにしたいです。お願いします。
今、追加でimport java.util.Scanner;と
Scanner scanner=new Scanner(System.in);
int v = scanner.nextInt();
System.out.println("抜き出したい行数は?"+v);を入れてみました。このvと同じ行数を抜き出すようにしたいのですが、このままではうまくいかないのでご教授願います。お願い致します。
指定は行数では無く行番号ということでよろしいですか.
追加されたコードでは 2 と 5 の二つを入力できませんし, 複数の数値を指定するのならば入力の終わりも指示しなくては, いつまでも指定し続けることになります. その辺りは如何でしょうか.
回答1件
あなたの回答
tips
プレビュー