Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

配列から配列に代入

ソートされた配列str[j]を 別の配列 data d[]に代入したいですが???




 br = new BufferedReader(new FileReader("data.csv")); //CSVファイル
            int i = 0; 
            //ファイルの件数分配列に格納 
            while (br.ready())
            { 
                String line = br.readLine(); 
                str[i] = line; 
                i++; 
            }
            
            
            //ソート処理開始
            
            Arrays.sort(str);
            
            //str配列の要素を表示する。 
            
            for(int j =0 ; j<str.length ; j++)
            { 
            //   System.out.println(str[j] + "です");
                
            }

20

回答

7334

閲覧

20件の回答

評価

0

どうぞ、代入してください。

評価

0

すみません。string型の配列をデータ型の配列に代入する方法を、もう少し教えてください。おねがいします〜

評価

0

http://www.google.com/search?q=java+%E9%85%8D%E5%88%97+%E4%BB%A3%E5%85%A5

これくらいやってくれ。

評価

0

詳しく教えてもらうためには
詳しく質問しないとダメよ。

情報が少なすぎてアレだけど
配列strとdは同じ型なの?

Arrays.sortが使えているのに
代入できないなんて
きっと別の型なのかしらね。

とか良く見ていると
str[j]って配列の一要素?
data d[]ってdata型の配列って言う意味?
意味がわからないわ。

質問の内容がおかしいのかしら。
それとも私の知識が乏しいのかしら。

評価

0


str[j]は配列の一要素
data d[]はdata型の配列
です。

CSVから読み取ったファイルは
str[j]の要素にコピーされます。

そのコピーされた要素をdata d[]に代入(コピー)したいです。

表現が下手ですみません。

評価

0

ますますわけわかんないわ。
str[j]はStringでしょ?

data型ていうのがどんなものか知らないけど
Stringを一文字ずつばらして格納したいとか
そういうこと?

私エスパーじゃないから
提示されていない情報は
いっさいわからないのよ。

言葉で上手く表現できないのなら
プログラムなり
絵なりなんなりを利用して
がんばって伝えるのよ。

評価

0

てんこさん、ご迷惑をおかけします。本当にすみまっせん。
//探索する対象のデータ
data d[]の要素を記載していますが この要素をcsvファイルに置き換えて 
ファイルを読み込み
data d[]に代入したいです。
ご迷惑をおかけしますが宜しくお願いします。



import java.io.*;

public class BisectionSearch  {
        
    //dataクラスの定義
    class data{
        String name;
        int    code;
                
        //dataクラスのコンストラクタ
        data(String aname,int acode){
            name=aname;
            code=acode;
        }
    }
        
    //dataInputメソッド
    int  DataInput() {
        String searchnum ;//文字型データ
        int number;       //整数データ
        System.out.println("探索データコード入力");
                        
        try {
            //InputStreamReaderクラスのインスタンスの生成
            //InputStreamReaderクラスはキーボードからの入力を読み取る
            //System.inはオブジェクト、inはSystemクラスのフィールド
            InputStreamReader isr=
            new InputStreamReader(System.in);
            //BufferReaderクラスのインスタンスの生成
            //BufferReaderクラスは行で読み込む
            BufferedReader br=new BufferedReader(isr);
            //文字列LineにbrというインスタンスにかかわるreadLine()という
            //1行ごとにデータを読み込むメソッドで読み込む
            searchnum=br.readLine();
        } catch(IOException e) { //ファイルの入出力に関する例外をキャッチしたら
            searchnum  = "0";
        }
                            
        try{  
            //文字として読んだデータを整数に変換
            number = Integer.parseInt(searchnum);
        } catch(NumberFormatException  e) { //整数以外のキーが押されたとき
            number = 0; //0を返す                
        }
        return  number;//整数値を返す
    }

    //2分探索の本体
    void biSection(data d[],int key){
        int mid=0;//添え字の中央の値
        int low=0;//添え字の下限の値
        int high=d.length-1;//添え字の上限の値
        while(low <= high){
            mid=(low+high)/2;               
            //キーの添え字が中欧値のcode小さいか等しければ
            if(d[mid].code <= key)
                low=mid+1;
             //キーの添え字が中欧値のcode大きいか等しければ
            if(d[mid].code >= key)
                high=mid-1;
        } 

        if(key == d[mid].code){//探索データがあったとき
            System.out.println("探索コード = "+d[mid].code+"   探索データ = "+d[mid].name);                                                         
            System.out.println();   
        }
        else{//探索データがなかったとき
            System.out.println("探索データは見つかりません");
            System.out.println();
        }
    }
        
    public static void main(String[] args) {

        //BisectionSearchクラスのインスタンスの生成
        BisectionSearch bs = new BisectionSearch();
                                
        //探索する対象のデータ
        data d[]={bs.new data("JAL",1), bs.new data("JOB",2),
                          bs.new data("JCB",3), bs.new data("JEC",4),
                           bs.new data("JIS",5), bs.new data("JET",6),
                           bs.new data("JRC",8), bs.new data("JOC",9)
             };

        System.out.println("探索するときは 探索コード 整数( > 0 )を入力して下さい。");
        System.out.println("[ 探索を終了するときは −1を入力して下さい。]");
        System.out.println();
           
        //探索したいデータコード
        int key=0;//キーとする数値データ
                
        //探索作業
        while(  ( key = bs.DataInput()) >= 0) { 
            if ( key == 0 ) {
                System.out.println("整数(>0)を入力して下さい "); 
                System.out.println();
            }
            else {
                bs.biSection(d,key);
            }
        }
        System.out.println("終了します。");
    }
}

評価

0

なんか配列全然関係なさそうね。

このコードの例だとCSVファイルは
JAL,1
JOB,2
JOB,3
・・・
て感じになっているのかしら。

だとしたら
String line = br.readLine(); 
の後、lineを,の前後で分けて
その場でdataオブジェクトを作成すればいいじゃない。
配列のサイズがわからないなら一旦ArrayListに格納してから
配列に変換すればいいわ。

評価

0

あのさー、実行したんだけど
なんかよみとれないみたいで

もしかして環境設定のせいかな?

使っているのバージョンは

jdk1.6.0_12ですか?

評価

0

こうさん

そうです。jdk1.6.0_12の環境であれば読み取れます

評価

0

直前の回答にだけ返答してるな。ちゃんと全部読んで試してるんか?

評価

0

で、lineからdataを作れないという質問なのか、dataは作れても何行あるか分からないからdata[]に代入できないという質問なのか?

評価

0


ソートはどこにいったんだ?


 public static void main(String[] args) 
    {

        //BisectionSearchクラスのインスタンスの生成
        BisectionSearch bs = new BisectionSearch();
        
        BufferedReader br = null;
                                
     /*   //探索する対象のデータ
        
        //csvファイル
        String str[] = new String[10]; 
        try 
        { 
            br = new BufferedReader(new FileReader("data.csv")); //CSVファイル
            int i = 0; 
            //ファイルの件数分配列に格納 
            while (br.ready())
            { 
                String line = br.readLine(); 
                str[i] = line; 
                
                i++; 
            }
            
            
            //ソート処理開始
            
            Arrays.sort(str);
            
            //str配列の要素を表示する。 
            
            for(int j =0 ; j<str.length ; j++)
            { 
            //   System.out.println(str[j] + "です");
            }
            
            
                }catch (FileNotFoundException e)
                { 
                    System.out.println("ファイルが存在しません。"); 
                    e.printStackTrace(); 
                }
                catch (IOException e)
                { 
                    System.out.println("入出力エラー"); 
                    e.printStackTrace(); 
                }
    */        

評価

0

ちなみに二分探索を自前で書くのは、勉強にはいいが、一応[Arrays|Collections]#binarySearch()ってのがある。

評価

0

$さん

lineからdata[]に代入できないという質問です。
代入するには???

$さん教えてください。お願いします。

評価

0

私の回答は真っ向から無視なんだ。

評価

0

そんなやりとりの仕方じゃ、当分できんだろうな。

評価

0

Collection<Data> d = new LinkedList<Data>();
String line;
while((line=in.readLine())!=null){
  d.add(new Data(line.split(",")));
}
Data[] d2 = d.toArray(new Data[d.size()]);

こんな感じかな。さらっと書いたんで間違ってるかも。

評価

0

てんこさん、$さん、Kさん

本当に、ありがとうございました。

無事解決しました。

評価

0

http://www.josei-sepg.info/

http://www.google.com/search?q=java+%E9%85%8D%E5%88%97+%E4%BB%A3%E5%85%A5

以上の参考HP

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。