• ベストアンサー

[iアプリ]配列の格納について

iアプリでクイズを出題できるように現在制作しています。 その中でテキストファイルのリソースから文字列を読み込んで、","などで区切って配列に格納したいと思っています。 ソースは以下のとおりです。 class myPanel extends Panel{ public myPanel(){ BufferedReader in = null; String line = null; String[] kugi = null; String delim=","; try { // リソース接続処理 InputStream instream = Connector.openInputStream("resource:///test.txt"); InputStreamReader inreader = new InputStreamReader(instream); in = new BufferedReader(inreader); // テキスト読込み処理 while((line = in.readLine())!= null) { kugi = line.split(delim); Label myLabel = new Label(kugi[0]); add(myLabel); } } catch(Exception e) { e.printStackTrace(); } finally { try { in.close(); } catch(Exception e) {} } } } test.txtには 問題,答え1,答え2,答え3,答え4,答え5 といれているのですが以下のエラーがでます。 C:\~\Loadtext.java:28: シンボルを解決できません。 シンボル:メソッドsplit(java.lang.String) 場所:java.lang.Stringのクラス kugi = line.split(delim);      ^ エラー 1 個 ここからずっと進みません。 初歩的かもしれませんが、どうぞよろしくお願いします。

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

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

  • ベストアンサー
  • koki_m
  • ベストアンサー率83% (45/54)
回答No.2

こんばんは。 split(java.lang.String)メソッドが存在しないというエラーです。 CLDC1.0と1.1のStringクラスにはsplitメソッドがありません。 文字列を分割するメソッドを自作するしかなさそうです。 CLDC仕様書は参考URLからダウンロードできます。

参考URL:
http://sdc.sun.co.jp/java/index.html
sakusaku4
質問者

補足

回答ありがとうございます! そうだったんですね。知りませんでした。 文字列を分割するメソッドを自作するんですね。 まだどういったメソッドにすればいいのか分かりませんが、参考のサイトなどで勉強してみます! またよろしくお願いします!

その他の回答 (1)

  • yokkou
  • ベストアンサー率30% (34/111)
回答No.1

javaのバージョン違いです iアプリがJava1.3?をベースにしているのに対して インストールしているjavaのバージョン(1.5)が違っています javaDocにて String#split の導入バージョンが違っていることをご確認ください 補足すると、splitロジックを作りこむ必要があります ロジックはStringのjavaソースでも参考にしてください

sakusaku4
質問者

補足

回答ありがとうございました! インストールしているjavaのバージョンは「1.4.02_01」なのですが、 >>iアプリがJava1.3?をベースにしているのに対して とはどういった意味でしょうか? また >>javaDocにて String#split の導入バージョンが違っていることをご確認ください はどうやって違いを確認できるのでしょうか?? ロジックについては調べてみます!! 質問ばかりですみませんがお願いします。

関連するQ&A

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

    質問のタイトル通りなのですが、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]に格納したいと 思っていますが、やり方がよくわかりません。 よろしくおねがいします。

  • 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のエンコードについて?

    さまざまなホームページを探して、下記のプログラムでホームページの情報は読み取ることができるようになったのですが、文字化けを起こして見ることができません。 何をどうすれば文字化けを防げるのかまったくわかりません。 ご存知の方、おしえていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.yahoo.co.jp/"); in = new BufferedReader(new InputStreamReader(url.openStream())); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • javaのエンコードについて?

    下記のプログラムでホームページの情報は読み取ることができるようになったのですが、一部ホームページ(UTF-8エンコードのホームページと思われる)、文字化けを起こして見ることができません。 解決する方法を、教えていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.faireal.net/"); in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • javaでクッキーを取得したい

    以下ソースで、ホームページのデータは取得できるのですが、クッキーが必要なページではうまく作動しません。 どのように改良すればよいでしょうか? また、こういったプログラムを作るのに参考になる書籍をご存知でしたら教えてください。 よろしくお願いいたします。 import java.io.*; import java.net.*; class test { public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.yahoo.co.jp"); in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • Javaでのカンマで配列を分ける方法

    こんにちは。 カンマ区切りで入力されているデータを2次元配列に格納したいのですがよくわかりません。 それとデータをtxtファイルから入力する方法で配列を入力した分だけ作ることはできますでしょうか? 現在のプログラムは最初に配列を1000個用意する形になっているので効率的とは言えないと思うのですが・・・。 以下プログラムを載せます。 public String[] datain(){ String[] data = new String[1000]; String inputFileName; int i = 0; // 読み込むファイルの名前 inputFileName = "D:\\a.txt"; // ファイルオブジェクトの生成 File inputFile = new File(inputFileName); try { // 入力ストリームの生成 FileInputStream fis = new FileInputStream(inputFile); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); // テキストファイルからの読み込み String d; while ( ( d = br.readLine()) != null ) { data[i] = d; i += 1; } br.close(); } catch(Exception e) { e.printStackTrace(); } return data; } というメソッドです。 戻り値を返した後でも前でもいいので、 --データ-- (a.txt) あ,い,う,え,お か,き,く,け,こ さ,し,す,せ,そ ↓このように取り込みたいのです。 --配列-- [0,0] = あ  [0,1] = い  [0,2] = う  [0,3] = え  [0,4] = お [1,0] = か  [1,1] = き  [1,2] = く  [1,3] = け  [1,4] = こ [2,0] = さ  [2,1] = し  [2,2] = す  [2,3] = せ  [2,4] = そ よろしくお願いします。

    • ベストアンサー
    • Java
  • java ファイル操作

    現在javaでファイル操作しファイルの文字列を検索したりファイルに文字列を追加したりする ものを作成しています。 現状のコードはこのような感じです。 class addresskensaku{ public static void main(String[] args)throws IOException{ System.out.println("数字を選択\n1.名前で検索\n2.年齢で検索\n3.出身地で検索\n4.追加"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); //1が選択された場合 if(res == '1' || res == '1'){ System.out.println("名前を入力してください。"); BufferedReader fn = new BufferedReader(new InputStreamReader(System.in)); String str1 = fn.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 System.out.println("検索結果 :"); while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //部分一致 if(words[0].indexOf(str1) != -1){ System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //2が入力された場合 if(res == '2' || res == '2'){ System.out.println("年齢を入力してください。"); BufferedReader o = new BufferedReader(new InputStreamReader(System.in)); String ol = o.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp =null; //検索 while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //完全一致 if (ol.equals(words[1])){ // System.out.println("検索結果:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //3が入力された場合 if(res == '3' || res == '3'){ System.out.println("出身地を入力してください。"); BufferedReader p = new BufferedReader(new InputStreamReader(System.in)); String pref = p.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //部分一致 if(words[2].indexOf(pref) != -1){ System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //4が入力された場合 追加 if(res == '4' || res == '4'){ //氏名入力 System.out.println("氏名を入力してください。"); BufferedReader n = new BufferedReader(new InputStreamReader(System.in)); String str2 = n.readLine(); //年齢入力 System.out.println("年齢を入力してください。"); BufferedReader o = new BufferedReader(new InputStreamReader(System.in)); String str3 = o.readLine(); //住所入力 System.out.println("住所を入力してください。"); BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); String str4 = a.readLine(); //ファイルに書き込み try{ File file = new File("addressdata.txt"); FileWriter filewriter = new FileWriter(file, true); filewriter.write(str2+","+str3+","+str4+"\r\n"); filewriter.close(); }catch(IOException e){ System.out.println("e"); } } } } これをカプセル化し 各機能ごとにメソッドを分けて作ろうかなと思っています。 結果の出力はmainでやる予定です。

  • 例外、null

    Cinクラスでは,BufferedReaderクラスで定義されたreadLineメソッドを使って, 一行ずつ入力を行っている。 class Cin { private static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); public static String getLine() { String s = ""; try { s = in.readLine(); } catch (IOException e) { System.out.println("IO error!"); System.exit(1); } return s; } } このreadLineメソッドは,入力の終わりに到達するとnullを返し, それ以外の入力エラーがあるとIOException(Exceptionクラスのサブクラス)を投げる。 また入力の終わりに到達したことを,例外を用いて通知することも可能である。 readLineメソッドが,入力に関する状態を示すのに,「例外」、「nullを返す」 という二つの方法を使っているのにはどういう理由があるのか教えて下さい。

  • iアプリのjavaでsplitは使えないのですか?

    iアプリの開発をしています。 サーバーから取得した文字列を split を使って String の配列にしようと思ったのですが、 JDK1.5 compile... C:\iDKDoJa5.0\apps\msho\src\mshoCanvas.java:336: シンボルを解決できません。 シンボル: メソッド split (java.lang.String) 場所 : java.lang.String の クラス msg = error_msg.split("\n"); エラー 1 個 javacの実行に失敗しました となってコンパイルエラーになります。どうも、splitが存在しないようなのですがそいう仕様なのでしょうか? 代わりのメソッドはindexOf()とsubstring()を使って簡単に作れそうではありますが、用意されているのならわざわざ作るのはバカバカしいので(作るのがバカバカしいのではなく、サイズが増えるのが)質問しました。

    • ベストアンサー
    • Java
  • if文で

    String[]s = new String[1]; s[1] = "1";の1と BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String a = br.readLine();で入力した1は比較できますか?

    • ベストアンサー
    • Java