noblog!バンコク生活はなぜ良いのか

生のバンコク情報をおとどけ!

ゼロから始めるJava学習 in バンコク その17 配列、ArrayList、sprit、標準入力、複数行、wheil、for・・・ああもうごちゃごちゃ

もうメシは食ったかの?儂はノブじゃ。

f:id:nobubkk:20180803142726p:plain

儂はいま「paizaラーニング」をメイン教材、「マンガPG」「ドットインストール」をサブ教材としてJavaの勉強に取り組んでいる。

プログラミング学習歴については、本格的なものはゼロであるが頑張って勉強していきたい。

 

 

 

#07:Splitで文字列を分割しよう

paiza.jp

今回は分割というのがテーマのようだ。

標準入力で取り込んだデータを、","で分割して配列に格納していく。

入力エリアに、

犬、きじ、さる

と入れておく。

 

Scanner sc=new Scanner(System.in);

String data=sc.nextLine();

System.out.println(data);

ここまで標準入力でデータを取り込み、それを出力。

犬、きじ、さる

と出力された。

 

ここからsplitメソッドで分割して配列に格納する。

String[ ] array=data.split(",");

System.out.println(array[0]);

 

これで、カンマで区切った最初の文字が出力できる。

犬、きじ、さる

と出力された。

 

次に、配列の要素数を調べてみる。

System.out.println(array.length);

これで、

犬、きじ、さる

3

と出力された。

 

最後に、読み込んだデータが配列になったので、それぞれの要素を文章にして出力してみる。

for (String str : array){

System.out.println(str+"が仲間になった");

}

これで分割したデータを一つずつ表示できるようになった。

犬、きじ、さる

3

犬が仲間になった

きじが仲間になった

さるが仲間になった

と出力された。

 

言われた通りにやればもちろんできるのだが、一から全部書けと言われたら厳しい。

演習問題でもやはり躓いてしまった。(何とか正解にはたどり着けたが)

 

 

#08:配列に複数行データを読み込んでみよう→混乱

タイトルにも書いたが、もう何もかもがごちゃごちゃになってきた。

うろ覚えのところに新しい知識を詰め込んでいったものだから、断片的には思い出せてもすべては思い出せない。

ちょこちょこ復習はしていたが、結局ちょこちょこだったのであまり身についていなかったことが露呈した。

 

今回は読みこむ行が何列あるのか分からないものを取り込むのが目標・・・なのだが。

複数行を取り込むときは次のようにコードを書く。

Scanner sc = new Scanner(System.in);

while (sc.hasNextLine()){

String data=sc.nextLine();

System.out.println(data);

}

 

sc.hasNextLine()メソッドは、入力する行がまだあるか確認するメソッドだそうだ。

空の行があっても空のままで出力してくれる。

 

今はまだ配列ではないので、次に配列にする。

読み込む行が分からないので、ArrayListに追加する。

まずは、whileの前にarrayという空のリストを追加して、

 

Scanner sc = new Scanner(System.in);

ArrayList<String> array=new ArrayList<String> ();

while (sc.hasNextLine()){

String data=sc.nextLine();

array.add(data);

}

for (String str : array){

System.out.println(str);

}

 

やばい、そろそろ儂のメモリー限界。

一行ずつ見てみよう。

Scanner sc = new Scanner(System.in); → 入力から取り込む

ArrayList<String> array=new ArrayList<String> (); → 空のarrayを作った

while (sc.hasNextLine()){ → 複数行を最後まで繰り返し読み込む

String data=sc.nextLine(); → 1行読み込んで文字列にする

array.add(data); → さっき作った空のarrayリストに入れる

}

for (String str : array){ → arrayリストの要素を一つずつ取り出してstrとし最後まで繰り返す

System.out.println(str); → strを出力

}

 

あってるのかな?

たぶんあってるだろう。

 

でも、これ自分で書けと言われたら・・・

 

練習あるのみだな。

 

次が最後のチャプターなので、一気に行きたい!のだが、演習問題でまた躓いた。

というか、今回は本当にお手上げ状態。

 

必要そうなところをもう一度復習していかなければならないようだ。

 

演習問題2

演習問題2

入力エリアに複数行書かれている。

犬,5

キジ,3

サル,1

これを読み込んで、データをカンマで分割し、

「犬が5匹現れた

 キジが3匹現れた

 サルが1匹現れた」

と出力する。

 

最初からコードを書くフィールドにはこう書かれている。

Scanner sc= new Scanner(System.in);

while (sc.hasNextLine()){

String line= sc.nextLine();

//ここに、文字列を分割して出力するコードを書く

}

 

いろいろ試したのだが、

 

//ここに、文字列を分割して出力するコードを書くの下に、

String array = line.split(",");

を入れるとエラーが出てしまう。

なぜ?だめなの?

分割して配列に格納ではないのだろうか??

ArrayListに入れないといけないということなのか??

 

もう頭が混乱してきた。

また明日にでも復習してチャレンジしてみよう。

 

 

※有料講座の内容は少し問題等を改変しています。

 

 

これからプログラミングの勉強を始めようと思っている方、ぜひ一緒にやっていきましょう。

今宵はここまで。また次を楽しみにしておれ。

 

 

 

ページを閉じる前に、クリックしてから閉じてね。よろしくお願いします!

にほんブログ村 海外生活ブログ タイ情報へ
にほんブログ村

にほんブログ村 海外生活ブログへ
にほんブログ村