Javaのカウント方法について

このQ&Aのポイント
  • Javaのカウント方法について続きで伺います。仮に集計できても、郵便番号が区ごとに分かれてしまい、正しい集計結果を得るための方向性について質問させてください。
  • Javaのカウント方法で郵便番号を集計する際に、区ごとに集計結果を得るためには、文字列の配列を設定し、集計結果をソートする必要があります。クエリで集計する場合とは異なるアプローチが必要です。
  • Javaのカウント方法について質問させていただきます。具体的には、郵便番号が区ごとに分かれてしまい、正しい集計結果を得るためにはどのような方針が必要なのかを教えていただきたいです。
回答を見る
  • ベストアンサー

Javaのカウント方法について

neko_noko様 補足の項目がなかったので新規質問という形ですが、Javaのカウント方法について続きで伺います。 import java.io.FileReader; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.*; public class test01 { static String fname ="26KYOUTO.CSV"; //Stringtoknizer st = new Stringtoknizer(line,","); public static void main(String[] args){ if(args.length>0) fname = args[0]; try { BufferedReader reader = new BufferedReader(new FileReader(fname)); int count = 0; String line = reader.readLine(); while(line != null) { if(line.equals("26101")){//配列を設定? count++; } line = reader.readLine(); } reader.close(); //この部分で配列をソート? System.out.println("京都府北区=" +count ); } catch(FileNotFoundException e) { System.out.println("ファイルがありません。"); } catch(IOException e) { System.out.println("入出力エラーです。"); } } } のようにしましたが、仮に集計できても、当然郵便番号が26101=24(件)、26102=2*(件)となってしまい、北区=24(件)、下京区=2*件という形にしたければ、『if(line.equals("26101")){』の部分で文字列の配列を設定し、『reader.close();』の後に配列で計算したものをソートすれば北区=24と表示できるかと思ったのですが、クエリで集計する湖と以外で、このような方向性で正しいでしょうか。たびたびで質問で申し訳ありません。 宜しくお願い致します。

  • Java
  • 回答数7
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • hofchan
  • ベストアンサー率62% (17/27)
回答No.1

続きみたいですが、前回を知らないので はずしているかも知れませんが 26KYOUTO.CSV の一行が 26101 の場所を カウントするコードでいいのならこれで どうでしょう、出来る限りあなたのコードは 崩していません import java.io.*; public class Counter {  public static void main(String args[]) {   String file = "26KYOUTO.CSV";   String line = null;   int count = 0;    if (args.length > 0) file = args[0];    try {     BufferedReader br =      new BufferedReader(new FileReader(file));     while ((line = br.readLine()) != null) {      if (line.equals("26101")) count++;     }     br.close();    } catch (Exception e) {    } finally {    }    System.out.println(count);   } }

ta1999
質問者

お礼

hofchan様 返信遅くなりました。 一応完成いたしましたので、ご報告致します。 26KYOUTO.CSVファイルの一行目の不要なファイルをカウントしないようにしなければなりませんが、このように完成しました。 今まで有難う御座いました。 import java.io.FileReader; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.*; import java.util.StringTokenizer; public class Csv_0809{ static String fname = "26KYOUTO.CSV"; public static void main(String[] args) { if(args.length>0)fname = args[0]; try{ BufferedReader reader = new BufferedReader(new FileReader(fname)); String line = reader.readLine(); String globalNumber = ""; int count = 1; String address = ""; int rowcount = 0; while(line != null) { StringTokenizer st = new StringTokenizer(line,","); String number = st.nextToken(); if(number.equals(globalNumber)) { count++; for(int i = 0; i < 7; i++){ address=st.nextToken(); } } else { if(rowcount != 0){ System.out.println(address + count); } count = 1; globalNumber = number; } line = reader.readLine(); rowcount++; } reader.close(); }catch(FileNotFoundException e) { System.out.println("ファイルがありません。"); }catch(IOException e){ System.out.println("入出力エラーです。"); } } }

ta1999
質問者

補足

hofchan様 アドバイス有難う御座います。 実は26KYOUTO.CSVとは郵便局のHPからダウンロードした郵便番号のファイルなんですが、結果を郵便番号が26101=24(件)、26102=2*(件)ではなく、北区=24(件)、下京区=2*件という形に設定できればとおもっているのですができずに四苦八苦しています。 集計し、結果を仕分けることは難しいことを実感しています。 今後も「Javaのカウント方法について」というタイトルで完成するまで記載するので、何かしら気づいた点がありましたら何卒よろしく御願い致します。

その他の回答 (6)

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.7

まず、26KYOUTO.csv を見て最初に書いたコードは 「次は東京都と北海道も集計してくれ」と言われた時に Counter インターフェイスを実装した TokyoCounter と HokkaiCounter を書けば事が足りるコードでした ですが、それだとコードが少しだけ今より複雑になり 本来の質問の「京都府の区を集計する」事に対して ta1999 さんが必要かどうかもわからない拡張を加え 逆にわかりにくくさせるのもどうかと考えて 簡略化したコードが #5 のコードです、本来は 出来る限りそんな風に書くのがいいと思います # 実際それが必要になればデータベースかな? それに対して #6 のコードは、一度京都の集計結果を 出して、それを別なファイルに保存してしまえば そのプログラムはその集計結果のファイルがある限りは もう使うことはありません、この理由で「使い捨てのコード」です それをわざわざ Java で書くよりも、簡単に書ける Perl で書いた方が楽かな、という意味です

ta1999
質問者

お礼

hofchan様 返信、アドバイス有難う御座いました。 また、お礼のメールが遅くなり申し訳ありません。 『Java で書くよりも、簡単に書けるPerl で・・・・』ということだったんですね。ぱっと見た感じではPerlが簡単かわかりませんでしたが、 Perlにしろ、いずれ全てのプログラミング言語を作成してみようと考えています。その意味でさまざまな言語の経験がある方の意見は自分には大変貴重です。有難う御座います。 急いでいるとはいえ、今だデバック状態や、一部の苦手な文法の活用方法を見直している状態で、その後の経過をこのサイトに報告できず、申し訳ありません。 宜しくお願い致します。

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.6

文字数の関係上わけます #5 です   String[] index = {"\"京都市北区\"",            "\"京都市上京区\"",            "\"京都市左京区\"",            "\"京都市中京区\"",            "\"京都市東山区\"",            "\"京都市下京区\"",            "\"京都市南区\"",            "\"京都市右京区\"",            "\"京都市伏見区\"",            "\"京都市山科区\"",            "\"京都市西京区\""}; の部分を他の都道府県の区に書き換えて 別な都道府県のファイルを読み込ませても動く事を考えて 書きましたが、一部訂正です Analysis クラスの   Counter[] count = new Counter[11]; は   Counter[] count = new Counter[index.length]; とするべきですね、完全に使い捨てでよければ ------------------------------------------------- package analysis; import java.io.*; import java.util.regex.*; public class Analysis {  public static void main(String args[]) {   String line = null;   int counter = 0;      int kitaku = 0;   int kamigyouku = 0; // ここにそれぞれの区のカウンターを並べる(略)   int saikyouku = 0;   try {    BufferedReader br =     new BufferedReader(new FileReader("26KYOUTO.csv"));    while (br.ready()) {     String[] props = br.readLine().split(",");     if (props[0].equals("26101")) kitaku++;     else if (props[0].equals("26102")) kamigyouku++; // ここにも同じ様に並べる(略)     else if (props[0].equals("26111")) saikyouku++;     counter++;    }    } catch (Exception e) {    } finally {    }   System.out.println("北区\t:\t" + kitaku);   System.out.println("上京区\t:\t" + kamigyouku); // ここにも並べる(略)   System.out.println("西京区\t:\t" + saikyouku);   System.out.println("------------------------");   System.out.println("+\t\t" + counter);  } } -------------------------------------------------- でもいいでしょうが、こちらは本当に使い捨てです perl なんかで書いて 1 ~ 2 回使って捨てるコードです 思ったより使用頻度が多ければ Java や C/C++ で書き直すといった ところでしょうか、頑張ってください

ta1999
質問者

お礼

hofchan様 No.5、6のご返信、アドバイス有難う御座いました。 また、お礼のメールが遅くなり申し訳ありません。 大変助かります! 現在内容を理解しながら、デバックを行っております。 それと「本当に使い捨てです」というのは?(ちなみにperlの経験はありません。) 素人的な質問で申し訳ありませんが、お時間があるときにご返信お願い致します。 宜しくお願い致します。

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.5

------------------------------------------ // interface 無くてもいい package analysis; interface Counter {  String getIndex();  void setIndex(String index);  void setCount();  int getCount(); } ------------------------------------------- // カウントをとるクラス package analysis; public class KyoutoCounter implements Counter {  private int counter;  private String index;  public KyoutoCounter(String index) {   this.index = index;  }  public String getIndex() {   return index;  }  public void setIndex(String index) {   this.index = index;  }  public void setCount() {   counter++;  }  public int getCount() {   return counter;  } } ------------------------------------------------------ package analysis; import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; public class Analysis {  public static void main(String args[]) {   String[] index = {"\"京都市北区\"",            "\"京都市上京区\"",            "\"京都市左京区\"",            "\"京都市中京区\"",            "\"京都市東山区\"",            "\"京都市下京区\"",            "\"京都市南区\"",            "\"京都市右京区\"",            "\"京都市伏見区\"",            "\"京都市山科区\"",            "\"京都市西京区\""};   String line = null;   String file = "26KYOUTO.csv";   int counter = 0;   if (args.length > 0) file = args[0];   Counter[] count = new Counter[11];   for (int i = 0; i < index.length ; i++) {    count[i] = new KyoutoCounter(index[i]);   }   try {    BufferedReader br;     br = new BufferedReader(new FileReader(file));    while (br.ready()) {     String[] props = br.readLine().split(",");     for (int i = 0; i < index.length ; i++) {      if (props[7].equals(count[i].getIndex()))       count[i].setCount();     }     counter++;    }   } catch (Exception e) {   } finally {   }   for (int i = 0; i < index.length; i++) {    System.out.println(count[i].getIndex()          + "\t:\t" + count[i].getCount());   }   System.out.println("---------------------------");   System.out.println("+\t\t" + counter);  } } ---------------------------------------------- 実行結果 ---------------------------------------------- "京都市北区" : 360 "京都市上京区" : 660 "京都市左京区" : 506 "京都市中京区" : 556 "京都市東山区" : 214 "京都市下京区" : 601 "京都市南区" : 266 "京都市右京区" : 556 "京都市伏見区" : 628 "京都市山科区" : 290 "京都市西京区" : 255 --------------------------- + 6657 少し無理矢理な感じします このあたりは、本当は Perl なんかで 使い捨てにするコードです、長く使う必要が あればデータベースがいいですね

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.4

26KYOUTO.CSV というファイルを 郵便局の HP から DL されたということは 一般公開されているファイルですよね? 差し支え無ければ 2 ~ 3 行書き出す、または その DL ページへのリンクがあれば回答が 付けやすいです 最終確認として >そのCSVには各市町村の町名までの郵便番号総一覧がありますので >それを市町村別に集計し、結果を表示したいと考えています これは 北区=***** の形ということですから、市町村にまで分ける というより、それぞれの「区」の集計を表示させるということですよね? つまりは標準出力で --------------------------------- 北区 = 24 下京区 = *** --------------------------------- とするだけでしょうか? だとすれば CSV を見れば普通に出来ると思いますよ

ta1999
質問者

補足

hofchan様 早速のご返信、アドバイス有難う御座います。 DL ページへのリンクは http://www.post.japanpost.jp/zipcode/dl/oogaki.html からダウンロードしました。 --------------------------------- 北区 = 24 下京区 = *** --------------------------------- 仰るとおり以上の形で表示させたいです。 ただ、自分ではQNo.3225750で公開した方法でしか今だわかりません。例えば北区だけの集計はできても、それぞれの「区」の集計という表示までは中々おもいつきません。後は配列やソートを行わなければ表示は難しいと考えていますが・・・ まだまだ初心者レベルでご教授頂ければと思います。 何か補足点あれば何なりと仰ってくださればと存じます。 よろしく御願い致します。

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.3

やろうとされている事がなんとなく分かったような 気もしますが、疑問もあります まず、その .csv は " , " で区切られたあの CSV です よね? だとすれば、そのファイルをどの様に解析したいのでしょうか? 北区= **** にしたいという事は 京都府の中から京都市に分けて、さらに解析するのでしょうか? これをデータベース無しでやると言うことですよね CSV を見てそれをどんな仕様にしたいのか 例えば (北区と入力すれば 北区= の形になる) (ただ標準出力で 北区= 下京区= の形にする) 等が分からなければなければ何とも言えませんが >if(line.equals("26101")){//配列を設定? これは配列では無く String line が 26101 と等価であれば true をかえします >System.out.println("京都府北区=" +count ); これは標準出力で 京都府北区=******* // ****** はカウント数です つまりは、ファイルに 26101 と書かれた行は何行あるのかを 調べているだけです # CSV だとおかしい気もします .....

ta1999
質問者

補足

hofchan様 早速のご返信、アドバイス有難う御座います。 .csv は " , " で区切られたあの CSV です よね? →はい、郵便局のHPからダウンロードしたカンマ区切りのファイルです。 だとすれば、そのファイルをどの様に解析したいのでしょうか? 京都府の中から京都市に分けて、さらに解析するのでしょうか? →はい、そのCSVには各市町村の町名までの郵便番号総一覧がありますので、それを市町村別に集計し、結果を表示したいと考えています。 京都府の中から京都市に分けて、さらに解析するのでしょうか? これをデータベース無しでやると言うことですよね CSV を見てそれをどんな仕様にしたいのか? →はい、京都市の各市町村にわけます。できればDBなしでCSVの中で 北区=**という形で抽出したいと考えています。 ただ今のロジックでは全市町村別に集計し、さらに結果を表示するのは難しく色々ご質問した限りです。 ロジックを再度思考中ですが、また何かしらのご鞭撻いただければと存じます。 宣しく御願い致します。

  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.2

どうも、neko_nokoです。 ご指名いただいたので、回答します。 >当然郵便番号が26101=24(件)、26102=2*(件)となってしまい、 >北区=24(件)、下京区=2*件という形にしたければ DBを使わないとすれば、Hashtableなどを使ってみてはどうでしょうか? キーを郵便番号、値を住所にすれば値の取得もやりやすいと思います。

ta1999
質問者

お礼

neko_noko様 早速のご返信、アドバイス有難う御座いました。 「Hashtable」はあまり使ったことがありませんが、作ってみようと思います。 いずれ時間が取れ次第、DBを使った方法でも作成しようと思います。 また、完成するまで今後の詳細は載せようと思います。 お時間があるときに見て頂ければ幸いです。 有難う御座いました。

関連するQ&A

  • Javaのカウント方法について

    お伺い致します。 CSVで取り込んだデータの抽出をしたいのですが、方法が見出せません。どの点を直せば宜しいのでしょうか。 具体的には取り込んだ郵便番号をカウントして(例:京都市,34)CSVファイルに出力するように出したいのですがカウントがうまくできません。(以下、コメントアウトしたものがありますが、今までのソースを記載します) 宜しく御願いします。 import java.io.FileReader; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.*; public class test01 { static String fname ="26KYOUTO.CSV"; public static void main(String[] args){ if(args.length>0) fname = args[0]; try { BufferedReader reader = new BufferedReader(new FileReader(fname)); BufferedWriter pw = new BufferedWriter(new PrintWriter("orig.txt")); String line = reader.readLine(); System.out.println(line); pw.println(""); int n = 0; int count = 0; _/* while(true) { String line = reader.readLine(); if(line.equals("26101")) break; count++; } */ reader.close(); System.out.println("京都府北区=" +count ); } catch(FileNotFoundException e) { System.out.println("ファイルがありません。"); } catch(IOException e) { System.out.println("入出力エラーです。"); } } }

    • ベストアンサー
    • Java
  • javaでCSVの中身から最大値を表示したい

    タイトルの通りなのですが、javaのプログラムでCSVの中の少数を読み込み、そこから最大値を表示したいのです。 CSVの中身は 10.1,20.2,30.3,40.4,50.4 100.1,200.2,300.3,400.4 という半角の少数がカンマで区切られた状態になっています。 import java.util.Scanner; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class test { public static void main(String args[]) throws NumberFormatException, IOException{ System.out.println("csvのファイル名を入力"); Scanner sc = new Scanner(System.in); String str = sc.next(); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(str))); String line; while((line=br.readLine())!=null){ String[] sp = line.split(","); double sum=0;//合計値格納用 for(int i=0;i<sp.length;i++){ sum += Double.parseDouble(sp[i]); } System.out.println(line+"の合計値は"+sum); } br.close(); } } 上記のプログラムは、CSVの中身の各行の合計値を算出するもので、これを元に各行の最大値を算出したいのですが、どうしても比較演算子を使用しての算出がうまくいきません。 どなたかプログラムに詳しい方がいましたら、ご教授いただけると助かります。 つたない文章ですがよろしくお願いします。

    • ベストアンサー
    • Java
  • ファイル読み込みで

    市販のテキストでファイルを読み込むプログラムを作ったのですがうまくできません。 import java.io.*; public class ShowFile{ public static void main(String args[]){ if(args.length != 1){ System.out.println("使用法: java ShowFile ファイル"); System.out.println("例: java ShowFile ShowFile.java"); System.exit(0); } String filename = args[0]; try{ BufferedReader reader = new BufferedReader(new FileReader(filename)); String line; while((line = reader.readLine()) != null){ System.out.println(line); } reader.close(); }catch(FileNotFoundException e){ System.out.println(filename + "が見つかりません"); }catch(IOException e){ System.out.println(e); } } } javac ShowFile.javaでコンパイルはうまくいったのですが、 実行時にjava ShowFile input.txtとするとException in thread "main" java.lang.NoClassDefFoundError: ShowFile というエラーが出ます。input.txtというファイルは存在します。 アドバイスをお願いします。

    • ベストアンサー
    • Java
  • CSV読み込み 文字化け

    失礼いたします。 以前のログを見てエンコードを設定してみたのですが、出力が文字化けします。ローカルファイルを読み込んでコンソール出力しているだけなのですが・・・。 分かる方、よろしくお願いします。 -------------------ソースはここから import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; // import java.io.FileReader; FileReaderからInputStreamReaderに変更済み import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class ReadCSV { public static void main(String[] args) { try { File csv = new File("C:\\AP.csv"); // BufferedReader br = new BufferedReader(new FileReader(csv)); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"EUC_JP")); // BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"MS932")); while (br.ready()) { String line = br.readLine(); StringTokenizer st = new StringTokenizer(line, ","); while (st.hasMoreTokens()) { System.out.print(st.nextToken() + "\t"); } System.out.println(); } br.close(); } catch (FileNotFoundException e) { キャッチ処理 }

    • ベストアンサー
    • Java
  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java
  • JAVAのソートプログラムについて

    List1.txtの内容の単語の数を数え、その数を単語の隣に表示するプログラムを作りました。 (1)List1.txtの内容 ゲーム ゲーム 麻雀 麻雀 野球 ゲーム (2)実行結果 C:\>java Lists ゲーム 3 野球 1 麻雀 2 (3)プログラム import java.io.BufferedWriter; import java.nio.charset.Charset; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.*; public class Lists { public static void main(String[] args) throws IOException{ File file3 = new File("C:\\List1.txt"); BufferedReader br3 = new BufferedReader(new FileReader(file3)); FileWriter filewriter3 = new FileWriter(file3,true); TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); String line; while((line = br3.readLine()) != null){ String[] words = line.split("\\s"); for(String s : words){ if(!tm.containsKey(s)){ tm.put(s,1); }else{ tm.put(s,tm.get(s).intValue()+1); }} } for(String s : tm.keySet()){ System.out.println(s + " " + tm.get(s) ); }}} このプログラムを上から単語の数が多い順に表示したいのですがどこをどう修正したらいいのか悩んでます。 C:\>java Lists ゲーム 3 麻雀 2 野球 1 と表示されればOKです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaのソートプログラムについて

    List1.txtの内容の単語の数を数え、その数を単語の隣に表示するプログラムを作りました。 (1)List1.txtの内容 ゲーム ゲーム 麻雀 麻雀 野球 ゲーム (2)実行結果 C:\>java Lists ゲーム 3 野球 1 麻雀 2 (3)プログラム import java.io.BufferedWriter; import java.nio.charset.Charset; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.*; public class Lists { public static void main(String[] args) throws IOException{ File file3 = new File("C:\\List1.txt"); BufferedReader br3 = new BufferedReader(new FileReader(file3)); FileWriter filewriter3 = new FileWriter(file3,true); TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); String line; while((line = br3.readLine()) != null){ String[] words = line.split("\\s"); for(String s : words){ if(!tm.containsKey(s)){ tm.put(s,1); }else{ tm.put(s,tm.get(s).intValue()+1); }} } for(String s : tm.keySet()){ System.out.println(s + " " + tm.get(s) ); }}} このプログラムを上から単語の数が多い順に表示したいのですがどこをどう修正したらいいのか悩んでます。 C:\>java Lists ゲーム 3 麻雀 2 野球 1 と表示されればOKです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaで配列の格納をしたいです。

    配列の格納がうまくいきません。 javaについて質問させて頂きます。 ユーザーが数字を入力し配列 atr[ i ]に格納され 配列 v[ i ] に v[ 0 ] = count ... v[ 143 ] = count ... v[ 144 ] = count - 1 ... v[ 287 ] = count - 1 ... ... v[ count-288 ] = 2 ... v[ count-145 ] = 2 ... v[ count-144 ] = 1 ... v[ count-1 ] = 1 と、格納されるようなプログラムを作っています。 for文で作ろうと考えたのですが count, count-1 , ... 3, 2, 1と値を入れようと思いましたがうまくコンパイルが通りませんでした。 エラーは以下になります。 a.java:48: シンボルを見つけられません。 シンボル: メソッド readLine(int) 場所 : java.io.BufferedReader の クラス value = br_v.readLine(atr[i]); もし宜しければアドバイスやご指摘を頂けませんでしょうか。 説明も拙い部分がありますが宜しければお願いします。 import java.io.*; import java.util.Arrays; class a { public static void main(String[] args) throws IOException { int atr[]; atr = new int[25]; int count = 0; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ //絶対に通る String str = br.readLine(); int res = Integer.parseInt(str); if(res == 0){ break; } else{ atr[count] = res; } count++; } for(int i=0; i<count; i++){ System.out.println(atr[i] + "が、選択されました。"); } int v[] = new int[25*144]; String value; try{ BufferedReader br_v = new BufferedReader(new InputStreamReader(System.in)); for(int i=count; i<count; i--){ value = br_v.readLine(atr[i]); v[i] = Integer.parseInt(value); } } catch(IOException e){ System.out.println("エラーです。"); } } }

  • Java初心者です。どうぞお教えください。

    CSVファイルを読み込んで、ソートしてから、現在日時のファイル名でCSVで書き出します。以下のファイルでは、CSVで書き出せません。現在日時のファイル名をつける方法もよくわかりません。どうぞ教えてください。importは省略しています。 public class CSVdata { public static void main(String[] args) { String fname = " " ; ArrayList<String> list = new ArrayList<String>(); String save_filename = getFileName(); if(args.length>0) { fname = args[0]; } try { BufferedReader reader = new BufferedReader( new FileReader(fname) ); String Line = null; while ((Line = reader.readLine()) != null) { list.add(Line); } reader.close(); Collections.sort(list ); PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(save_filename + ".csv"))); for (String string : list) { writer.println(string); } writer.close(); } catch (FileNotFoundException e) { System.out.println("ファイルがありません"); } catch (IOException e) { System.out.println("ファイルがありません"); } } public static String getFileName(){ Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); return sdf.format(d); } }

  • Vectorの使用法

    現在、課題の作成中なんですけどうまくいかないので教えてください。 ファイルに表示されているアクセスログファイルを別のファイルに表示させるコードなんですが、 import java.util.*; import java.io.*; public class AccessLog{   public static void main(String args[]){     if(args.length != 1){  System.exit(0);     }     String filename = args[0];     Vector vector = new Vector();     try{      String line ; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filename))); while((line = reader.readLine()) != null){ vector.addElement(line); writer.println(vector); } }catch(IOException e){   System.out.println(e); }   } } Vectorの使い方がよくわからないので教えてください。宜しくお願いします。

専門家に質問してみよう