• 締切済み

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
  • 回答数2
  • ありがとう数1

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

int count = 25; for (int i = 0; i < 25; i++) { for (int j = 0; j < 144; j++) { v[i * 144 + j] = count; } count--; }

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

とりあえず、そのエラーについては、マニュアルを読みましょう。 使い方を間違えています http://docs.oracle.com/javase/jp/6/api/java/io/BufferedReader.html#readLine%28%29 何がしたいか、いまひとつ意味がわからないので、プログラムの中身については、正しいかどうかわかりません。 ただ for(int i=count; i<count; i--){ はループしません。

関連するQ&A

  • countに実行した回数をいれたいです。

    javaのカウント回数について質問させて頂きます。 ユーザーから数字を入力した回数をint countに格納して 表示したいのですがコンパイルは通りますが実行できません。 elseの中にSystem.out.printlnした文字も表示されずどうやら elseを通ってなくatr[i]にも値が格納されてないようです。 調べた限りではわからなく宜しければアドバイスやご指摘をお願い致します。 import java.io.*; import java.util.Arrays; class last { public static void main(String[] args) throws IOException { int atr[]; atr = new int[25]; int count = 0; int your_plan[][] = new int[300][144]; //1日のスケジュール String dayplan; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ //絶対に通る System.out.println("数字を選択してください。"); String str = br.readLine(); int res = Integer.parseInt(str); if(res == 0){ System.out.println("選択終了です。"); break; } else{ atr[count] = res; } count++; System.out.println(count); }

  • CSVファイルを二次元配列に格納するプログラム

    前回のソースコードを改変してみました String Str = ""; int Count = 0; try { File inFile = new File("./res/test.csv"); FileReader fr = new FileReader(inFile); BufferedReader br = new BufferedReader(fr); while (br.ready()) { Str = br.readLine(); String[] temp = Str.split(","); int[] m = new int[temp.length]; for (int i = 0; i < temp.length; i++) { m[i] = Integer.parseInt(temp[i]); System.out.print(m[i] + ","); } System.out.println(); Count++; } br.close(); fr.close(); } catch (Exception e) { System.out.println("ファイル読み込みに関するエラー"); } 今一次元配列になっているのですが、これを二次元配列に代入したいのです Countで何回ループしたかによって二次元配列の縦の要素数としたかったのですが、 そうすると横の要素数になるループ中の一次元配列が使えないので困っています

  • CSVファイルを二次元配列に格納するプログラム

    整数のCSVファイルを読み込んで、int型の二次元配列に格納するプログラムを作成中なのですが どうもうまくいきません。 String Str = ""; try { File inFile = new File("./res/test.csv"); FileReader fr = new FileReader(inFile); BufferedReader br = new BufferedReader(fr); ArrayList<String[]> al = new ArrayList<String[]>(); while (br.ready()) { Str = br.readLine(); al.add(Str.split(",")); } int[][] im = new int[al.size()][]; for (int i = 0; i < al.size(); i++) { im[i] = (int)al.get(i); // ここでエラー } br.close(); fr.close(); } catch (Exception e) { System.out.println("ファイル読み込みに関するエラー"); } 他にいい方法ありませんか? また逆で、int型配列に格納されているデータをCSVファイルとして出力する方法もお願いします

  • 文書を読み込み配列に格納

    質問のタイトル通りなのですが、Javaプログラミングで 例えば、 1.2;2.3;1.0; 5.3;0.3;0.5; 1.4;4.2;2.2; といった3行の文書があるとして、この文書を読み込み、配列d[3][3] に格納するにはどのようにすればよいでしょうか。 d[0][0]=1.2、d[0][1]=2.3、d[0][2]=1.0、d[1][0]=5.3といった具合に 格納したいのです。数値はdouble型で格納しようしています。 とりあえず、 BufferedReader br = new BufferedReader(new FileReader("○○")); で読み込み、 String str = null; String[] str1 = null; String regex = ";"; を用意しておいて、 while((str = br.readLine()) != null){ str1 = str.split(regex); } で数値を分割するところまでできています。 ここからString型からDouble型に変換して、d[3][3]に格納したいと 思っていますが、やり方がよくわかりません。 よろしくおねがいします。

  • ファイルからの読み込み 配列

    座標データの数値のテキストファイルから配列の中に座標値を格納したいのですが、int型のデータを読み込んで配列に格納するのは、どのようにプログラムを組めばよろしいのでしょうか?下のようにxzahyou.csvというファイルから配列Z[i]に格納したくて組んでみたら、 br = new BufferedReader(new FileReader("xzahyou.csv")); for(int i=0;i<X.length;i++){ String line = br.readLine(); X[i]=line; X[i] = line;のところで互換性がないと出てきました。int型の場合どのようにすればよろしいのでしょうか?教えてください。お願いします。

  • 配列の値の参照について

    下記のプログラムの-------------で囲まれた部分が、コンパイルは通るのですが実行すると"value[1][0]"以降が参照できません(ここではcount=3 となっています)。 for文を使わずに"System.out.println(value[1][0])"とすると値を取り出せるのですが…。 実行時のエラーは Exception in thread "main" java.lang.ArrayIndexOutOfBoundException: 3 です。 ソースコードをそのまま載せて長文になってしまい申し訳ありません。 プログラム初心者なので、些細なことでもいいので回答お願いします。 import java.util.*; import java.io.*; public class Search { static String dataFileName = "CityData.txt"; ArrayList<String> array = new ArrayList<String>(); GetDataCount gdc = new GetDataCount(dataFileName); int count = gdc.getCount(); int count2 = 0; String[][] value = new String[count][3]; public Search(String dataFileName){ try{ BufferedReader reader = new BufferedReader( new FileReader(dataFileName) ); String line = ""; while((line = reader.readLine()) != null){ Vector<String> variable = readLine(line); System.out.println(variable); count2++; } }catch(IOException e){ System.out.println(e); } //---------------------------------------------------------- for (int i=0; i<count2; i++){ for (int j=0; i<3; j++){ System.out.println(value[i][j]); } } //---------------------------------------------------------- } public Vector<String> readLine( String line ){ StringTokenizer st = new StringTokenizer( line, "," ); Vector<String> variable = new Vector<String>(); for( int i=0 ; i<3 ; i++ ){ String data = st.nextToken(); variable.addElement( data ); value[count2][i] = data; System.out.println(value[count2][i]); } return variable; } public class GetDataCount{ int count = 0; public GetDataCount(String dataFileName){ try{ BufferedReader reader = new BufferedReader( new FileReader(dataFileName) ); String line = ""; while((line = reader.readLine()) != null){ count++; } }catch(IOException e){ System.out.println(e); } } public int getCount(){ return count; } } public static void main(String[] args){ new Search(dataFileName); } }

  • 配列について質問です。

    学校で以下のような内容のプログラムを組む課題が出されました。 「数を格納した配列の各要素の和を出力せよ。」 一応組むことはできたのですが、引っかかることがあります。 私が組んだのは下のような要素の個数は引数で定義、 各要素は標準入力で読み込むというものです。 import java.io.*; class main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); int n =Integer.parseInt(args[0]); int[] a = new int[n]; for(int i=0;i<n;i++){ a[i] = Integer.parseInt(br.readLine()); } int b=0; for(int i=0;i<n;i++){ b+=a[i]; } System.out.println("sum = "+b); } } ここで質問なのですが、仮に引数で5と入力すると 配列a[]はa[0]~a[5]の計6個できると思うんです。 でも、実行してみると要素数はa[4]の5個までしかできず、 最後のa[5]はどこに行ったのだろう?というものです。

    • ベストアンサー
    • Java
  • 配列の初期化に関する問題で・・・

    Javaのプログラミングの問題で、下記のような問題が出ました。 要素数が10のint型配列aの各要素を順に3,12,7,20,15,5,8,18,10,16で初期化し、 キーボードから入力された値が配列の何番目に格納されているかを表示するプログラムを作成してください。 ただし、データが配列の中に存在しない場合は「○○は見つかりませんでした」と表示してください。 「if文を使って場合分けする」というヒントがありましたが よくわかりません。 下記のように考えてみたのですが、思うようになりません。 教えて頂けたらと思います。 import java.io.*; public class renshu { public static void main(String[] args)throws IOException { int a[]={3,12,7,20,15,5,8,18,10,16}; int n; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("探索する数字を入力してください>"); n=Integer.parseInt(br.readLine()); a=Integer.parseInt(br.readLine()); switch(a){ case 3: System.out.print(a+"はa[1]に格納されています。"); break; case 12: System.out.print(a+"はa[2]に格納されています。"); break; case 7: ~~~~~(省略) break; default; System.out.print(a+"は見つかりませんでした。") } } }

    • ベストアンサー
    • Java
  • 入力データ数を入力して、その数だけ整数値を入力し配列を格納した後、入力

    入力データ数を入力して、その数だけ整数値を入力し配列を格納した後、入力した値を横に表示するプログラムを下記に作成したのですが、思う通りに表示されません。初期化しても最後の値になるし、なぜでしょうか? import java.io.*; class Hairetu1 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("データはいくつですか?"); String str = br.readLine(); int num = Integer.parseInt(str); int a[]=new int[num]; int i,tmp=0; for(i=0; i<a.length; i++){ System.out.print((i+1)+"番目は?"); str = br.readLine(); tmp = Integer.parseInt(str); a[i] = tmp; } for(i=0; i<a.length; i++){ System.out.print("入力した値は"+tmp+"\t"); }

    • ベストアンサー
    • Java
  • キーボードから10人分の点数を格納する配列を用意し、平均点および平均点

    キーボードから10人分の点数を格納する配列を用意し、平均点および平均点以上の人数と番号を表示するプログラムで、下記のプログラムを作成してみたんですけど、平均点以上の人数と番号がうまく表示されません。if文でも人数は0になるし、番号は1~10番まで表示されるし、なぜでしょうか? import java.io.*; class Hairetu2 { public static void main(String args[]) throws IOException { System.out.println("10人分の点数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int s[]=new int[10]; int i; int sum=0,count=0; double avg=0; for(i=0; i<s.length; i++){ System.out.print((i+1)+"番は?"); String str = br.readLine(); int a = Integer.parseInt(str); s[i]=a; sum+=a; avg = (double)sum/10; if(avg<=count) count++; } System.out.println("平均点は"+avg); System.out.println("平均点以上の人は"+count+"人"); for(i=0; i<s.length; i++){ if(i>=avg) i++; System.out.print((i+1)+"番\t"); } } }

    • ベストアンサー
    • Java

専門家に質問してみよう