• 締切済み

ファイル操作と配列について

Java言語で,テキストデータを読み込み,それを配列に格納したいのですが, どうすればいいのでしょうか? 配列に格納するときに,うまい具合にfor文などで一気に格納したいです。

  • tomo5
  • お礼率61% (37/60)
  • Java
  • 回答数1
  • ありがとう数2

みんなの回答

回答No.1

配列というのはどの配列なのでしょうか? オブジェクトならどのオブジェクトの配列なのでしょう。 String[]ですか?もしやbyte列ですか? もしかしてC言語プログラマの方かもしれないですが、 Javaの場合は何かしらのオブジェクトを生成するのがよろしいかと。 なお、たいがいのことはJavaのリファレンスで事足ります。

参考URL:
http://java.sun.com/j2se/1.3/ja/docs.html
tomo5
質問者

補足

解答ありがとうございます。 Stringです。 オブジェクトの生成ですね,わかりました。調べてみます。

関連するQ&A

  • c言語の配列操作

    c言語で、hairetu[8][8]があったとして、その中でいくつかの中に1が入っていて、そのほかは0が入っているとします。 0 1 2 3 4 5 6 7 0|1 0 0 0 1 1 1 0 1|1 0 0 0 0 0 0 1 2|0 1 1 0 1 0 1 1 3|・・・・・・・・・・・・ 4|・・・・・・・・・・・・ 5| 6|・・・・・・・・・・・・ 7|0 1 1 0 0 0 0 1 という具合です。 そのとき、ランダムで1を1箇所しかない状態にしたいのですが、 自分が考えた方法だと無駄が多いので、もっとスマートな方法はないかと思い質問させてもらいました。基本的な質問なのですがよろしくお願いします。 以下自分が考えた方法 [64][2]の配列を作成し、上記の[8][8]の配列をfor文で解析し、1が入ってるところの番号を配列[64][2]に格納する。 乱数を使い、ひとつだけ選択する。

  • VB2005 コントロール配列について教えていただけませんか?

    現在VB2005を用いてプログラムを行なっている初心者です。 ここのサイトでVB2005ではコントロール配列は使用できないことを知りました。そこで、例えばフォーム上にTextBoxを5個配置して、各TextBoxに入力された値を配列に格納するのにはどのようにすれば良いでしょうか? data(0) = textbox1.text data(1) = textbox2.textと一つずつやるしかないでしょうか・・・ For文などを用いて簡単にできる方法を教えてください。 よろしくお願い致します。

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

    座標データの数値のテキストファイルから配列の中に座標値を格納したいのですが、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型の場合どのようにすればよろしいのでしょうか?教えてください。お願いします。

  • ファイルの読み込み、配列に格納

    お世話になります。Java初心者です Javaプログラムを実行する同じディレクトリにあるテキストファイルとデータファイルをコマンドラインで同時に読み込み それぞれ違う配列に格納したいのですが、1つのファイルの読み込みは出来ても2つ同時の読み込みと配列格納でつまづいています。 読み込むテキストファイルには以下のような1行の文が、 Dr. Fujita is great! 読み込むデータファイルには以下のような文字が書かれています。 AC 4C 7C 10C KC 3D 6D 9D QD JB 3C 6C 9C QC 2D 5D 8D JD JA 2C 5C 8C JC AD 4D 7D 10D KD 配列に格納する際、テキストファイルの場合は全て大文字にし、アルファベット以外の記号(スペース含)は全て消して配列に格納します。 上の例でいえばこのような状態で格納です↓ DRFUJITAISGREAT データファイルの場合は、2組1文字をそのまま配列に格納です。ただしスペースは飛ばします。 上の例でいえば、ACを配列0に、4Cを配列1に、7Cを配列2に、、、と格納していきます。 import java.io.*; public class sample{ public static void main(String[] args){ try{ FileReader f = new FileReader(args[0]); BufferedReader b = new BufferedReader(f); Strings; while((s=b.readLine())!=null){ System.out.println(s); ←読み込んでるか確認 } }catch(Exception e){ System.out.println(no file); } } } ファイルの指定は実行時に、java sample datafile.dat textfile.txt と指定します。 読み込むプログラムは以上のように書いたのですが、2つファイルを読み込むにはどのように記述したらよいのでしょうか。 FileReaderを2つ作成?しても最初に指定したデータファイルの内容がまた読み込まれるだけで・・・ 読み込んだら変数sに入りますが、たとえばs.substring()なんかでわけて配列に入れようとしても、s.substring()←ここでエラーが出てしまいます。 あと、Dr. Fujita is great!のアルファベットを大文字にし、記号(スペース含)を飛ばして格納するにはどうしたらよいのでしょうか。 宜しくお願いします

    • ベストアンサー
    • Java
  • テキストファイルを配列に

    始めまして C言語にてテキストファイルの中身を読み込み一次元配列に代入するというシステムを作ろうとしているのですがわかりません テキストファイルの中身は 12 5312 72 7 444 53 7884 といった具合で100数行あり一行ごとに配列に入れたいです 勉強を始めたばっかりで本を見ても書いていなく困っています わかるかたご指導願えますか? よろしくお願いいたします

  • C言語において、以下の条件下で、配列rbufに格納されているデータを配

    C言語において、以下の条件下で、配列rbufに格納されているデータを配列HEXに移動する方法を教えてください。 なお、C言語超初心者ですので、意味不明なことを書いてしまう可能性もありますが、宜しくお願いします。 まず、配列に関しては、 char rbuf[256]; char HEX[256]; と定義されているとします。 そして rbuf にはテキストデータが入っているものとします。 このrbufに入っているテキストデータを、16進数に変換して順番にHEXに格納したいのです。 (rbuf[1]に入っているデータを16進変換してHEX[1]に、 rbuf[2]に入っているデータを16進変換してHEX[2]に……という具合に。) お分かり頂けましたでしょうか? ちなみに以下のようなことを試してみましたがダメでした。 for(i=0;i < sign;++i){ sprintf(HEX,"%02X",rbuf[i]); } ※(signにはrbufに格納されているデータ数が入っています。) 当たり前ですが、上のように書くと、HEXは次々と上書きされ、 一番最後のデータしか入りません。 かといって次のように書くと、文法的に間違っているようでコンパイルエラーになります。 for(i=0;i < sign;++i){ sprintf(HEX[i],"%02X",rbuf[i]); } どうすればよろしいのでしょうか?

  • C# 配列の配列(多次元配列?)

    C#において、配列の配列中に格納した値を、検索することを 行いたいのですが、格納した値そのものを見ることができません。 まだ、C#を始めて間もないので、配列に格納する時点で、 不備があるかも知れませんが、お願いします。 やりたいこと ・テキストファイル内にある値を、2次元配列または、多次元配列に格納 ・配列に格納した値で、データチェックなどを行う予定  テキストファイル内のデータは、下記内容となり要素数も固定ではなく変動する   A=1,2,3・・・   B=11,22,33・・・ 実際のソースは、 //配列 ArrayList list = new ArrayList(); //配列格納 1レコード毎用 ArrayList listtmp = new ArrayList(); while ((strGenderTextLine = objReader.ReadLine()) != null) {  string strBuffer;  //「=」前の値格納用変数  string[] strBuffer2; //「=」後の値格納用配列  listtmp=null;  //strtmpに「=」前の値を格納  strtmp = TextLine.Split('=').GetValue(0).ToString();  //strtmp2に「=」後の値を格納(配列)  strtmp2 = TextLine.Split('=').GetValue(1).ToString().Split(',');  for (int i = 0; i <= strtmp2.Length - 1; i ++)  {   //[i,0]に、「=」前の値を代入   if (i == 0)   {   listtmp.Add(strtmp);   }   else   {   listtmp.Add(strtmp2[i].ToString());   }  }  //list配列にlistTmp配列を格納(配列の配列)  list.Add(listtmp);  intT = intT + strtmp2.Length;  //行数カウント  intTLine = intTLine + 1;  } ここから、配列「list」内に入っている値を閲覧することができる方法を教えていただければと思います。 宜しくお願いいたします。

  • C言語 配列 ファイルの読み取りについて

    c言語習いたてで恐縮ですが、よければ私の拙い質問にお付き合いください。 ID=100,DATA=7,size=100 配列str[ID][DATA][size]にファイルを読み込んでデータの管理を行うというプログラムを作成しているのですが、写真1のようなデータを for(i=0; i<ID; i++){ for(j=0; j<=DATA; j++){ fscanf(fp,"%s",str[i][j]); } } というプログラムを用いて読み取りたいのですが、 str[1][7]とstr[2][0]、str[2][7]とstr[3][0]のように隣接した配列 str[n][7]とstr[n+1][0] がなぜか同じ文字を格納し、調べたところ本来str[n][7]で表示されるはずの文字がどこにも格納されていないという結果になりました。 この問題の解決法、または感じた違和感など、教えていただければ幸いです。

  • [arduino]数値の大きなデータを二次配列へ

    シリアル通信で得たデータを二次元配列へ格納するために、 以前では、 if(Serial.available()>120){ for(int k=0;k<8;k++){ for(int l=0;l<15;l++){ //読み込んだ値を配列に代入 matrix[k][l]=Serial.read(); } } } このようなやり方で読み込んだ値を二次元配列に代入していたのですが、 128個以上のデータを扱いたい場合、Serial.availableでは保持できず、困っています。 方法として、 (1)一つずつデータを読み込み、128回ループを繰り返し配列に貯めていく。その後配列を2次元配列に代入する。 (2)一つデータを読みこんだら二次元配列の1行目1列目のドットに格納、もう一つデータを読みこんだら二次元配列の1行目2列目のドットに格納…というように、 読みこんだデータをそのまま二次元配列のそれぞれの場所へ格納していく。 というような二つの方法を思いついたのですが、 (1)の方法では、配列にデータを貯蓄していくコードをこのように↓書いたのですがうまくいかず、 for(int i=0;i<128;i++){ if(Serial.available()>0){ data[128] = Serial.read(); } } (2)の方法では、データを二次元配列のそれぞれの場所へ格納していく指定方法が分かりませんでした。 正しい書き方や、良いアイデアをお持ちの方がいましたら、是非御教授お願いします。

  • バイナリファイルの操作(配列の操作について)

    こんにちは。 大変お世話になっております。 配列要素の先頭[0]から[5]までを文字列N、[6]から[1029]までをバイナリデータの計1030バイトの配列要素を使用しています。 [現在行なっている操作方法] 1. Buf[1500]とBuff[1500]を用意 2. fread関数により、Bufに1024バイトずつ格納 3. sprintf関数により、Buffの先頭[0]から[5]まで文字列挿入 4. strcat関数により、BuffとBufを結合 と言う形をとっています。 そこで、sprintfにて先頭から[5]までの文字列を挿入後、先頭から[5]までの配列要素を削除(不要になるため)し、バイナリデータのみにしたいのですが、何か方法はありますでしょうか? NNNNNNDDDDDDDDDDDDDDDDD・・・・・DDDDD←1029番 から NNNNNNを削除し、 DDDDDDD・・・・・DDDDD のみにしたいと思っています。 よろしくお願いします。

専門家に質問してみよう