Upload
xmlproj2014
View
83
Download
0
Embed Size (px)
Citation preview
XMLPro 10回目
1
前回の復習
配列
2
配列とか名前変わってるけど用途は変数といっしょです
配列はループで使うと便利なだけ
3
Type1 変数
• int型変数aを宣言 中身を5で初期化
4
Type2 配列
• int型配列aを宣言 作られた要素a[0]の中身を5で初期化
5
Type3 変数
6
Type4 配列
7
本日の内容
ファイル入出力乱数を生成するRandomクラス無限ループとbreak文 ループから脱出するためには問題
8
ファイル入出力
9
• Javaには、ファイルから読み込んだり、ファイルに書き込んだりする機能(クラス)が入っています。
• ICPCでだいたい最初にでてくるので今回はファイル入出力の方法をやります
詳しい話はクラスしてからします
10
• というわけでworkspace>プロジェクト名(XMLPro2014)直下にFilesフォルダ作成>中にtest.txt作成
11
• workspaceの場所は人により違うと思います
12
注意
• Eclipseから実行するときは、Eclipseのワーク
スペースからのパスで指定したしたほうがいいみたいです
例えるとLinuxのターミナルで今いる場所がプロジェクト名> となっているため
13
書いてみてファイル読み込み
14
書いてみてファイル書き込み
15
Fr
• try {• //ファイルを扱うファイルクラスの準備パスでファイル指定• File file = new File("Files\\test.txt");• //文字をまとめて扱うときに使われるBufferedReaderクラス引数はFileReaderでfileを指定• BufferedReader br = new BufferedReader(new FileReader(file));
• String str;• //一行ずつ読み込み br.readLine();で• while ((str = br.readLine()) != null) {• System.out.println(str);• }• br.close();• } catch (FileNotFoundException e) {• System.out.println(e);• } catch (IOException e) {• System.out.println(e);• }
16
Fw
• try {• //ファイルを扱うファイルクラスの準備パスでファイル指定• File file = new File("Files\\test.txt");
• //ファイルに書き込むFileWriter準備書き込む先は↑で指定したfile• FileWriter fw = new FileWriter(file);
• //fw.write(); で書き込み• fw.write("Hello World");• fw.close();• } catch (IOException e) {• System.out.println(e);• }
17
で両方書いたら実行
• ファイルの読み書きできたらおkです
とりあえず、この文を記述すれば
ファイルから読み込み、書き込みが行えるってことだけわかればおkです
18
今日のラスボス最後らへんのページにもあります
• 乱数を使って、じゃんけんをするプログラムをつくってみよう
• キーボードから自分の手を選択し、勝敗によって出力を変える
19
乱数
20
• Javaには、乱数を生成する機能(クラス)が入っています。
• こちらもまだ使う方法だけわかってもらえればおkです
21
書いてみて乱数の生成
22
実行すると
• 0~4までの数字がランダムに出力されます
23
使い方
• importで読み込んで
• nextInt()で取得、範囲は0~()内の数値-1まで
24
やってみて
• 100 ~199までの乱数を出力するプログラム
25
答え
• 0~99までの値を取得して、それに100足せば100~199になるってだけです
26
無限ループとbreak文
27
書いてみて
• while文の条件にtrue入れると簡単に無限ループできます
28
• 永遠に条件をみたさないようにしてもいいです
29
止めるには赤い□クリック
30
break;
• break文を使用するとループから抜けることができます
• break文が処理された時点で
break; の外側のループ1つが終了します
31
書いてみて
32
実行結果
• count が5になった時点でifの中身の
break; 実行→ループ終了
33
書いてみて
• 2重forの中にbreak書いたらどうなるの?
34
実行してみてくださいな
• break文の外側のループ1つが終了するため
jが5になったら内側のループ終了
35
そんなひどい・・・
36
• Pixivより
ローラ姫
37
やってみて
• というわけでローラ姫でもなんでもいいが
「無限ループ状態にして条件を満たしたらbreak文でループを終了させる」
プログラムをつくってみてくださいな
38
おまけ
• Thread (そのうちやるかも)を使いそれっぽく改良
39
コピー用• package xmlpro0603;
• import java.util.Scanner;
• public class DQTH extends Thread {
• public static void main(String[] args) {• Scanner s = new Scanner(System.in);
• while (true) {• System.out.println("ローラ姫「わたくしもつれていってくださいますね?」");• System.out.println("1:はい" + "\t2:いいえ");• int ans = s.nextInt();
• if (ans == 2) {• try {• System.out.println("勇者「いいえ」");• System.out.println("ローラ姫「そんな、ひどい…」");• Thread.sleep(1000);• System.out.println("・");• Thread.sleep(1000);• System.out.println("・");• Thread.sleep(1000);• System.out.println("・");• Thread.sleep(1000);• System.out.println("・");• } catch (InterruptedException e) {• e.printStackTrace();• }• } else if (ans == 1) {• System.out.println("勇者「はい」");• System.out.println("ローラ姫「うれしゅうございます。ぽっ…」");• break;• }• }
• }• }
40
問題1
• 乱数を使って、じゃんけんをするプログラムをつくってみよう
• キーボードから自分の手を選択し、勝敗によって出力を変える
41
問題2
• じゃんけんをするプログラムをあいこならもう一度じゃんけんをするようにし、決着がつくまでじゃんけんを行うよう改良してみる
42