• 締切済み

Javaの質問です

Javaのプログラムで、テキストを読み込んで、一行ずつarraylistに追加します。 そのデータを規則に従って(例えば--------を含む行から--------を含む行までが一つのグループ)というように、グループ化ってできますか? ちなみに--------から--------の行数は決まっていません。 回答お願いします。

みんなの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.4

こんなことをしたいのかなというのを勝手に想像して書いてみた。違っていても悪しからず。先頭行や最終行に"--------"があってもなくてもOK。 ArrayList<ArrayList<String>> x = new ArrayList<ArrayList<String>>(); ArrayList<String> y = new ArrayList<String>(); while (テキストの読み込みが終わるまで) { String s = (一行読み込んだ内容); if (s.equals("--------")) { if (y.size() > 0) { x.add(y); y = new ArrayList<String>(); } } else y.add(s); } if (y.size() > 0) x.add(y);

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

具体的にって言われても、質問が具体的じゃないから無理だよ。 1.○○を含む行を見つけたら、 その行を格納領域に突っ込んで退避しておいて、 2.××を含む行を見つけるまで、 読み込んだ行を同じ格納領域に突っ込んで、 3.××を含む行があったら、 その行を格納領域に突っ込んで、arraylistに格納領域を突っ込む で、1.~3.を全行読むまで繰り返せばいいんじゃない? まぁもっと具体的にっていうなら、自分で具体的なコードでも書けば、添削してくれる人がいるかもよ。

全文を見る
すると、全ての回答が全文表示されます。
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

1.「規則」といっているものの仕様は確定していますか?  また、矛盾のないものになっていますか?  例えば、線が1行の場合や3行あった場合はどのような処理としますか? 2.「グループ化」というのは、どのようにすることを言っていますか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

できますよー。

aera123
質問者

補足

回答ありがとうございます。具体的にはどのような文法やメソッドを使いますか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • fortranでテキストファイルを読み込む

    fortranでプログラムを作っています。 普通にテキストファイルの文字列を読み込むことくらいは出来ます。 そこで、質問です。 あるテキストファイルがあります。 これは行数が何行あるかわからないとします。 しかし、一行の形式はすべて同じです(例えば、3つの数字とか)。 そこで、ループでこのファイルをすべて読み込み、 行が無くなったらREADを終了する方法を知っている方がいたら教えて下さい。 ちなみにfortranは77もしくは95です。 わかりづらくて済みません。 よろしくお願いいたします。

  • javaについて質問です。

    初めまして、情報系の大学に進学して課題を出されました、この接続クラスを使って全件表示させる、4件インサートする、2から4行目までを取得する実行クラスを作りなさいとの事で全く分からなくて悩 んでおります、どうかご教授お願いいたします。 mysqlにはすでにIDNO(3) Name Addressが 入ってる状態を想定して答えなさいとの事。。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.ArrayList; public class CatWalkhitomin{ //** データベースとのコネクションを作る変数 */ private Connection co; String url = "jdbc:mysql://localhost/reportdb?useUnicode=true&characterEncoding=SJIS"; String user = "root"; String password = "hitomin1995"; /** * DBに接続、トランザクション開始 */ public void connect() throws Exception{ Class.forName("com.mysql.jdbc.Driver"); co = DriverManager.getConnection(url, user, password); co.setAutoCommit(false); return; } public void disconnect() throws Exception{ co.close(); return; } public void commit() throws Exception{ co.commit(); return; } public void rollback() throws Exception{ co.rollback(); return; } /** * Insert、Update、Deleteを実行 * @param sql SQL文 * @return iCount 更新件数 */ public int updateExec(String sql) throws Exception{ PreparedStatement ps = co.prepareStatement(sql); //executeUpdateメソッドでsql文を実行し戻り値の更新件数をiCountに代入 int iCount = ps.executeUpdate();       return iCount; } /** * Select文を実行 取得した値を戻す * @param sql SQL文 * @return strData 取得した値 */ public String[][] select(String sql) throws Exception{       //sql文を実行する為のインスタンスをsql文select count(*) from numatatableで生成。 PreparedStatement ps = co.prepareStatement("select count(*) from numatatable"); //executeQuerymメソッドでsql文を実行。読み込んだデータの中身をrsに代入 ResultSet rs = ps.executeQuery(); rs.next(); //next()で行データを読み込む準備 int rowCount = rs.getInt(1) ;//rowCountへnumatatableの行数を代入 //selectExecメソッドの第二引数を0、第三引数をrowCountとして全ての行データを二次元関数にしてreturn return selectExec(sql, 0, rowCount); } /** * Select文を実行 取得した値を戻す * @param sql : SQL文 <br> fromIndex : 取得開始行 * @return strData : 取得した値 */ public String[][] select(String sql, int fromIndex) throws Exception{ PreparedStatement ps = co.prepareStatement("select count(*) from numatatable"); ResultSet rs = ps.executeQuery(); rs.next(); //next()で行データを読み込む準備 int rowCount = rs.getInt(1); return selectExec(sql, fromIndex, rowCount); } /** * Select文を実行 取得した値を戻す * @param sql : SQL文 <br> fromIndex : 取得開始行 <br> toIndex : 取得終了行 * @return strData : 取得した値 */ public String[][] select(String sql, int fromIndex, int toIndex) throws Exception{ PreparedStatement ps = co.prepareStatement(sql); ResultSet rs = ps.executeQuery(); ResultSetMetaData met = rs.getMetaData(); //テーブルの列の数を取得して変数coulumに代入 int coulum = met.getColumnCount(); // 1行分ずつ全てのデータを格納する為のArrayList ArrayList<String[]> al = new ArrayList<String[]>(); while(rs.next()){ //rsの全てのデータを読み込むまでループ //getRow()で現在の行を取得し、メソッドの第二引数の取得開始行以上かつ、第三引数以下であればtrue if(rs.getRow() >= fromIndex && rs.getRow() <= toIndex){ String[] str = new String[coulum]; //1行分のデータをString[]に格納 for(int i = 0; i < coulum; i++){ str[i] = rs.getString(i + 1); } al.add(str); //ArrayListにデータを1行分づつadd } } // 読み込んだ全てのデータが入っているArrayListを二次元配列に変換 String[][] strData = al.toArray(new String[al.size()][]); return strData; //変換した上記のデータをreturn } }

    • ベストアンサー
    • Java
  • java

    こんにちは。 javaの初心者で、現在、javaのプログラムを作成中ですが、テキストフェイルのデータの BufferedReaderで読み込んだあとどうやって分割し、int型配列に格納しますか? 先輩たち よろしく お願いいたします。

  • JAVA LIST ソート

    JAVA LIST ソート JAVAの初心者です。よろしくお願いします。 検索結果の一覧画面のデータを SORT ボタンをクリック時、JAVA側で セッションBEANに保持してる 画面一覧のLISTデータをあるキーでソートしたいですが、 わからなくて困ってます。 自分なり考えたのは、 ArrayList list = new ArrayList(); List.add(getSessionBean());ーーーセッションBEANのデータをリストに追加 Collections.sort(list, new MyComparator() ここで MyComparator()での書き方がよくわかりません。 もし、ソートキーが 複数あれば どうなりますか? サンプルなどがあれば、ご教授頂ければ幸いです。

  • Javaの質問です

    テキストファイルを一行ずつ読み込んでリストに格納します。それを五行ずつまとめたものを1つの要素として別のリストに格納したいのですが、どのようなコードで実現できますか?if文やfor文で試行錯誤しましたが、うまくいきません…。

  • JAVAにご質問です。

    JAVAにご質問です。 バイナリーデータをVBAで言うMid関数みたいに 指定した行~行を取得したいです。 クラスと使い方を教えてください・

  • 大容量のテキストファイルの内容を解析について

    10000行1GBほどの大容量のテキストファイルの内容を解析しようとしています。 このテキストファイルは約20行で一塊のデータが入っており、次の20行からまた一塊のデータがはいっています。現在、全行を1行ごとにArrayListに格納してから 各行にキーワードが含まれていないかチェックし、含まれていたらそのデータの塊の中にある2行目を行を出力しようとしています。 しかし、10000行のArrayListを宣言しようとしたところ、途中でOutOfMemoryになり、メモリ不足になります。そこで、最初の20行を読み込み、処理をし、次の20行を読み込み処理をする・・・と考えているのですが、このようなことをJAVAのソースコードで実現することは可能でしょうか?? 皆さんは大容量ファイルを解析するときにどのような手法をとっていますか? ご教示いただければ幸いです。

    • ベストアンサー
    • Java
  • java のstruts1.3です。

    java のstruts1.3です。 Cannot invoke newStrutsKadai.EntryWorkForm.setArrayDB on bean class 'class newStrutsKadai.EntryWorkForm' - argument type mismatch - had objects of type "java.lang.String" but expected signature "java.util.ArrayList" と言うエラーがでます。 以下javaのソースです。DB接続は完璧に出来ています。 public final class EntryWorkForm extends ActionForm { private static final long serialVersionUID = 1L; private String cmbOsName; ArrayList<EntryWorkForm> array = new ArrayList<EntryWorkForm>( ) ; public void reset( ActionMapping map, HttpServletRequest req ) { //必要な部分だけ抜粋 //検索された行数文ループ while( rs.next( ) ) {//本マスタテーブル 検索された行数文ループ String stOSName = rs.getString("OSName"); //上記の2行を丁寧に記述した EntryWorkForm obj = new EntryWorkForm( stOSName.toString() ); array.add( obj ) ; } //END while( rs.next( ) ) this.setArrayDB( array );//ここでエラーエラーエラー } /****************************************************************************************/ private ArrayList<EntryWorkForm> arrayDB = new ArrayList<EntryWorkForm>( ); //セット オブジェクト配列 public void setArrayDB( ArrayList<EntryWorkForm> arrayDB ){ this.arrayDB = arrayDB; } //ゲット オブジェクト配列 public ArrayList<EntryWorkForm> getArrayDB ( ) { return this.arrayDB ; } /****************************************************************************************/ public String getCmbOSName ( ) { return this.cmbOsName; } public void setCmbOSName ( String cmbOsName ) { this.cmbOsName = cmbOsName; } public EntryWorkForm( ) { } //コンストラクタ 引数あり EntryWorkForm ( String cmbOSName ) { System.out.println("テスト用で作成したコンストラクタが呼ばれています。 ReturnScreenFormDB.java"); cmbOsName = cmbOSName; } 質問です--- JSPでセレクトボックスに動的に出力しています。 JSP画面でボタンを押して画面遷移をすると上記のエラーが出ます。

    • ベストアンサー
    • Java
  • ACCESSでの並び替えについて

    ACCESSのプログラミングについて教えてください。 データベースより抽出した行を任意順に並べかえたいのですが、そのようなことは可能でしょうか? 抽出した行数は最大500行位です。並びには特に決まった規則はなく基本的にかわりません。 但し月毎にデータが追加される可能性はあります。 漠然とした質問ですがよろしくお願いいたします。

  • java勉強中です。

    java勉強中です。 今、ArrayListでつまづいています。 質問の仕方が下手で、内容が分かり難いかもしれませんが、 どなたか、どうかよろしくお願いいたします。 ArrayList<String> listA = new ArrayList<String>(); ArrayList<String[]> listB = new ArrayList<String[]>(); があります。 1回目に listA = [aaa, bbb, ccc, ddd] 2回目に listA = [eee, fff, ggg, hhh] と、listA.add("~")で4つ追加して、 4つたまったら、それを1つの塊として 今度はlistBにaddしていきたいのですが、 listB.add(listA);としてしまっているので 下記のようにエラーになってしまいます。 ArrayList<String[]> add(String[])は引数(ArrayList<String>)に適用できません。 listBに[aaa, bbb, ccc, ddd],[eee, fff, ggg, hhh] としたいのですが、どのようにしたら良いでしょうか?

    • ベストアンサー
    • Java