vectorを使った列の計算方法

このQ&Aのポイント
  • JavaのVectorを使用して列合計を計算する方法を知りたいです。
  • 指定されたファイルから行ごとの数字を読み込み、列ごとに合計を計算して出力する方法をお教えください。
  • 要素がカンマで区切られた文字列から数字を取り出し、行ごとに合計を計算する方法を知りたいです。
回答を見る
  • ベストアンサー

vectorを使った列の計算について

への補足 列合計を計算したいのですが、 まったくといってどうすればいいのか思いつきません>< どのようにループすれば列合計を計算、出力できるのでしょうか? import java.util.*; import java.io.*; public class Gyosyukei { public static void main(String args[]) { try{ BufferedReader br = new BufferedReader(new FileReader(args[0])); String str; while((str = br.readLine()) != null){ // 1行を格納するVector Vector vcLine = new Vector(); StringTokenizer st = new StringTokenizer(str,","); for(int i =0;st.hasMoreTokens(); i++){ String token = st.nextToken(); // 行の要素に追加 vcLine.addElement(token); } /* 行合計 */ int gyosum = 0; int num = 0; for(int j =1; j < vcLine.size(); j++){ num = Integer.parseInt((String)vcLine.get(j)); gyosum += num; } System.out.println(gyosum); } } catch(IOException e){ } catch(ArrayIndexOutOfBoundsException ae){ } } }

  • Java
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

http://okwave.jp/qa2904170.html の続きですよね?(というより、そのものなのになぜ一旦閉じたのかわかりませんが) NAME1,VAL11,VAL12,VAL13,...VAL1m NAME2,VAL21,VAL22,VAL23,...VAL2m :    :   :   :     : NAMEn,VALn1,VALn2,VALn3,...VALnm だとして、何を求めたいのですか? val11からvaln1までの値、val12からvaln2までの値・・・val1mからvalnmまでの値 とn個の値を求めたいのですか? それとも、val11からvalnmまでの総和を1つだけ求めたいのですか?

kokoamuku
質問者

お礼

ここの使い方がいまいち飲み込めなくて一度終了してしまいました。 大変ご迷惑をおかけしました。 val11からvaln1までの値、val12からvaln2までの値・・・val1mからvalnmまでの値を求めたいと思っております。質問がわかりにくくて大変申し訳ございません。 宜しく御願い致します。

その他の回答 (1)

  • i2719
  • ベストアンサー率35% (11/31)
回答No.2

アルゴリズムの一例として int[] sum = null;//列合計 while (..readLine()..) {   Vector vcLine..   if (sum == null) sum = new int[vcLine.size()];//一行目で列合計計算用領域を確保する   for(int j..){     int num =..     sum[j] += num;   } } for (int j..) {..   System.out.print(sum[j]); }

関連するQ&A

  • Vectorによる計算

    名前,値,値,値,値,値,値 ・・・ 中略 ・・・ 名前,値,値,値,値,値,値 以上のフォーマットのCSVファイルを読み込み、 行と列の集計結果を出力するというプログラムを作っています。 Vectorクラスを使うというきまりがあります。 行についてはできたのですが、列の計算方法がわかりません。 どのようにするといいのでしょうか? 以下は私の作成したソースです。 ご助言いただけたらと思います。 宜しくお願いいたします。 import java.util.*; import java.io.*; public class Gyosyukei { public static void main(String args[]) { try{ BufferedReader br = new BufferedReader(new FileReader(args[0])); Vector vc = new Vector(); String str; int retsusu = 0; while((str = br.readLine()) != null){ StringTokenizer st = new StringTokenizer(str,","); int gyosum = 0; for(int i =0;st.hasMoreTokens(); i++){ String token = st.nextToken(); vc.addElement(token); if(i > 0){ int num = Integer.parseInt(token); gyosum += num; } } System.out.println(gyosum); } } catch(IOException e){ } catch(ArrayIndexOutOfBoundsException ae){ } } }

  • 今勉強中の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で計算

    Javaを10月から始めた初心者です。 摂氏から華氏に変えるプログラムを作成したいのですが、結果が合いません。 計算の所のプログラムが間違っているのだと思うのですが、どうすれば良いのか分からないので教えてください。 import java.io.*; class quiz01{ public static void main(String[] args) throws IOException{ System.out.println("摂氏の温度℃を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int F = 9/5*num+32; System.out.println("華氏の温度Fは " + F + " です。"); } } よろしくお願いします!

    • ベストアンサー
    • Java
  • 誰か教えてください!

    javaのプログラムですが import java.io.*; import java.util.*; public class Suudoku{ Suudoku(int[] data){ public static void main(String[] args);{ int[] data = new int[81]; if(args.length!=1){ System.err.println("need 1 argument"); System.exit(1); } BufferedReader br; try{ br = new BufferedReader(new FileReader(args[0])); for(int i=0;i<9;i++){ String tmp = br.readLine(); StringTokenizer stn = new StringTokenizer(tmp," ",false); for(int j=0;j<9;j++){ data[i*9+j]=Integer.parseInt(stn.nextToken()); } } }catch(Exception e){ System.err.println(""+e); System.exit(1); } new Suudoku(data); int board[][] = {{ 6, 0, 1, 0, 7, 0, 2, 0, 8 }, { 0, 7, 0, 6, 0, 8, 0, 9, 0 }, { 9, 0, 0, 0, 3, 0, 0, 0, 7 }, { 0, 8, 0, 3, 0, 4, 0, 1, 0 }, { 4, 0, 2, 0, 0, 0, 9, 0, 5 }, { 0, 6, 0, 1, 0, 9, 0, 2, 0 }, { 1, 0, 0, 0, 8, 0, 0, 0, 2 }, { 0, 2, 0, 7, 0, 6, 0, 5, 0 }, { 3, 0, 7, 0, 9, 0, 6, 0, 1 }}; } } } の後はどうようにしたら良いか教えて下さい。

  • 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
  • 九九を横に表示する。

    入力した整数までの九九を 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 以下略 のように表示したいのですが 私の作ったプログラムだと縦に表示されてしまいます。 1 2 3 4 5 6 7 8 9 のように。(-"-;A ... プログラムは以下の通りです。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class q07quiz07 { /** * @param args */ public static void main(String[] args)throws IOException { // TODO 自動生成されたメソッド・スタブ System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int i , j; i = 1; while(i <= num){ j = 1; while(j <= 9){ System.out.println(i*j+ " "); j++; } System.out.println(); i++; } } } 回答よろしくお願いします。

    • ベストアンサー
    • Java
  • 文字列について(続き)

    文字列について、あれから私がベストアンサーに選んだ回答を元に下記のプログラムを作成したのですが私が作成したプログラムで出た結果が下記のようになります。実行例のような結果を出すにはどのようにすればいいのですか?Java初心者なのでお願いします。 作成したプログラムで出た結果 文字列を入力 My name is Taro Sandai. 整数を入力 10 My name is.iadnaS oraT 実行例 文字列を入力 My name is Taro Sandai. 整数を入力 10 My name isdnaS oraT ai. import java.io.*; class K2 { 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("整数を入力"); String str2 = br.readLine(); int num = Integer.parseInt(str2); String str3 = str1.substring(0,num); String str4 = str1.substring(num); StringBuffer str5 = new StringBuffer(str4); str5.reverse(); System.out.println(str3+str5); } }

    • ベストアンサー
    • Java
  • javaプログラミングの質問です。

    http://questionbox.jp.msn.com/qa1030602.html?StatusCheck=ON に載っている、プログラムを以下のようにQuestionというクラスで実行してみたところ、 import java.io.*; class Question{ public static void main(String Args[]){ BufferedReader reader = null; String strArray[][] = new String[4][4]; String fileName = "foo.txt"; int i = 0; int j = 0; try{ reader = new BufferedReader ( new FileReader(fileName) ); String line; while ( (line = reader.readLine() ) != null ){ StringTokenizer st = new StringTokenizer ( line ); while ( st.hasMoreTokens() ){ strArray[i][j] = st.nextToken(); System.out.print ( strArray[i][j] + " " ); j ++; } j = 0; i ++; System.out.println (""); } } catch ( Exception e ){ System.out.println ( e.toString() ); } } } Exception in thread "main" java.lang.Error: コンパイル問題が未解決です。 StringTokenizer を型に解決できません。 StringTokenizer を型に解決できません。 というエラーが出ます。 このサイトの質問者はうまくいっているようなのですが、私のコンパイラがうまく動いていないのでしょうか? java version "1.6.0_07" を使っていて、Eclipseを用いてコンパイルをしたりしています。 どなたかご指摘をどうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • Scanner と BufferedReader

    javaでキーボードからの入力を格納するやつがあって、 Scanner と BufferedReaderのやり方がありますが、これはどう違うのでしょうか? それとも全く同じでしょうか? たとえば、 ■一つ目 import java.io.*; class Sample3{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列を入力してください"); String str1=br.readLine(); System.out.println("検索文字を入力してください"); String str2=br.readLine(); char ch=str2.charAt(0); int num=str1.indexOf(ch); if(num !=-1) System.out.println(str1+"の"+(num+1)+"番目に「"+ch+"」が見つかりました"); else System.out.println(str1+"に「"+ch+"」はありません"); } } ■二つ目 import java.util.Scanner; class Sample4{ public static void main(String[] args){ Scanner stdIn=new Scanner(System.in); System.out.println("文字列を入力してください"); String str1=stdIn.nextLine(); System.out.println("検索文字を入力してください"); String str2=stdIn.nextLine(); char ch=str2.charAt(0); int num=str1.indexOf(ch); if(num !=-1) System.out.println(str1+"の"+(num+1)+"番目に「"+ch+"」が見つかりました"); else System.out.println(str1+"に「"+ch+"」はありません"); } } これら2つは全く同じ実行結果が得られると思うのですが、 Scanner と BufferedReader の使い分けるべき場合などあるのでしょうか?

    • ベストアンサー
    • Java
  • 文字列について

    適当な文字列をキーボードから入力し、次に別の適当な整数numをキーボードから入力する。次に先に入力した文字列のnum番目からnum個の文字だけ逆順になるように文字列を並び替えた文字列を新たな文字列変数に代入し、その結果を画面に出力するプログラムを下記で作成したのですが、文字列時代が逆になってしまいます。どうしたら、 結果    文字列を入力      My name is Taro Sandai.    整数を入力     10    My name isdnaS oraT になるのですか? import java.io.*; class mojiretu4 { 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("整数を入力"); String str2 = br.readLine(); int num = Integer.parseInt(str2); StringBuffer sb = new StringBuffer(str1); sb.reverse(); System.out.println(sb);

    • ベストアンサー
    • Java

専門家に質問してみよう