• 検索結果がありません。

B 10 : N ip2003f10.tex B : 9/12/ :02 p.1/71

N/A
N/A
Protected

Academic year: 2021

シェア "B 10 : N ip2003f10.tex B : 9/12/ :02 p.1/71"

Copied!
69
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラミング入門

B

10

回「イベントとリアクション」

講師

:

斉藤 賢爾

ks91@sfc.wide.ad.jp ∆ 棟 N206 2003 年度秋学期

(2)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(3)

はじめに

みなさんのコメントから

(4)

みなさんのコメントから

1

英語ができないので http://java.sun.com/j2se/1.4.1/docs/api/ が利用できません 日本語のページはないのでしょうか 英語、できるようになるとよいですね http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html を試してみてください 決して分かりやすい日本語ではありませんが . . .

(5)

みなさんのコメントから

2

jar ファイルをダブルクリックしても何も起こりません 原因は何なのでしょう いろいろな可能性が考えられます 次を確かめてください manifest.txt を指定していますか? jar コマンドのオプションに f と m を入れて、その順序で出力アーカイブ ファイル名と manifest.txt を指定していますか? manifest.txt の内容は正しいですか? 最後に改行を入れていますか? 後で all-in-one jar ファイルの作り方をもう一度説明します

(6)

みなさんのコメントから

3

GUI が非常に難しく、自分の思った表示になりません 何度も試していますが、GUI の詳細を知らないために成功していません 具体的にどうしたいか、質問をいただければ説明できると思います GUI の詳細な作り方は多岐に渡ります GUI を作ること自体が目的ではないため、この授業では GUI の説明を網羅す るためだけに時間を割くことはしませんが、みなさんが実現したいことの手 助けはしたいと考えています このコースの残りの授業は、主にそのこと (Q & A) をしていきます 履修者のメーリングリスト で質問して、情報を共有しましょう

(7)

今週のテーマ

イベントとリアクション イベント (event) 出来事、事件の意 ユーザによる操作や時間の経過 · 他には、他のプログラムからの通信などがあります リアクション (reaction) 反動、反応の意 イベントに対する反応、応答 今週は、インタラクティビティ (相互作用) の実現の仕方を学びます みなさんが期末制作で作るプログラムは、インタラクティブなプログラムです 環境との相互作用を持つ物体をシミュレートします 対話型プログラムとも呼びます 今週の授業を終えると、(少なくともみなさんに共通して知っておいて欲しいことにつ いては) 本当にもう説明するものがなくなります 残りの 3 週は、みなさんの抱える具体的な問題を解決していくために使います

(8)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(9)

課題レビュー

課題をおさらいする

(10)

期末制作

.

プログラムによ

る物体の表現

みなさんの身の回りに実在する物体のうち、環境との相互作用を持つものをひとつ選 び、1,000 行未満程度の Java 言語のプログラムでその動作を真似てください。 物体とは 長さ・幅・高さの 3 次元において空間を充たしていて、知覚の対象となりう る物質。もの。 環境とは 周囲をとりまき、物体と相互作用を及ぼし合うものとして見た外界。 相互作用とは 互いに働きかけること。 定義はすべて広辞苑第五版に依りました。 グラフィカルなプログラムである必要はありません。 アプリケーションとして制作してください。 main() メソッドを有するプログラムがアプリケーションです。 各自、ひとりで制作してください。

(11)

課題

9.

画面をデザインする

期末制作で真似てみたい物体を仮に決めてください まだまだ後で変更できます ただし、今回の課題では画面を作るので、これより後に変更すると作業の手戻り が発生します その物体をコンピュータ上で表現するために、画面のデザインを作ってください Java 言語のプログラムとして作成してください ユーザがどのように操作できるかを考えて、ボタンなどを配置してみてくだ さい 機能はまだ作り込まなくてよく、ボタンなどが実際に反応する必要はありま せん 画面がプログラムの進行により変わっていく場合は、最初の画面だけを作れば OK です 期末制作では GUI を使わない人も、練習だと思って作ってみてください

(12)

提出状況と傾向

80 人中 6 人 提出 (12/9 現在) 傾向と所感 提出が少ないです 分からなかったら、履修者のメーリングリストで質問しましょう · 同じ問題を抱えている人たちと情報を共有しましょう · 具体的に、何をしたいか、そのためには何が問題となっているかを書いて ください · ちなみに、未だテーマが決まらなくてできなかった人は? 自動販売機のプログラム (Vending.java) を参考にしているものが多いです 参考にするのは全然、構いません (そのための授業マテリアルです) ただ、自分が表現したい内容を、自分の力でプログラミングするのが趣旨で すので、そのまま書き写すような真似はやめましょう 他にもどんどん、参考となるプログラムを紹介していきます All-in-one jar 形式になっていないものが多いです (Windows XP や Mac OS X で) ダブルクリックで起動できません

(13)



j

All-in-one jar



o

ファイルの作り方

-jar オプションで実行できる jar ファイルを作成するためには、次の内容のテキスト ファイル manifest.txt を用意します Main-Class: メイン(main()) メソッドを持つクラス名 < 改行 > 次のコマンドを用いて圧縮アーカイブを作成します

z:> jar cvfm 出力ファイル名 manifest.txt *.class *.java その他の必要な

ファイル群 <Enter> オプションの説明 c: 作成 v: 詳細表示 f: 圧縮ファイル指定 m: マニフェストファイル指定 その他の必要なファイルとは、例えば画像ファイルです ディレクトリ名を指定すれば、そのディレクトリ内のすべてのファイルが アーカイブに入ります * はワイルドカードで、*.java はそのディレクトリでファイル名が .java にマッ

(14)



j

All-in-one jar



o

ファイルの作り方

(具体例)

Vending.java のための manifest.txt を用意します

Main-Class: Vending < 改行 >

次のコマンドを用いて圧縮アーカイブを作成します

z:> jar cvfm vending.jar manifest.txt Vending.class Merchandise.class Money.class Vending.java images manifest.txt gpl.txt

jar ファイルの名前は大文字で始める理由がありません (クラス名と無関係です) ワイルドカードを使わずに、全部のファイルの名前を指定している例です 他のプログラムも入っているディレクトリで jar ファイルを作る場合は上の ように書く必要があります 独立したディレクトリの中で作業しているなら、*.class *.java で十分です manifest.txt 自体も入れています みなさんがダウンロードした vending.jar にも入っているので参考にしてく ださい

(15)



j

Java

言語での

GUI

java.awt

パッケージ

(AWT: Abstract Window Toolkit)

Java

言語の初期のユーザインタフェース用ライブ

ラリ

クラスの例

: Button

javax.swing

パッケージ

(Swing)

推奨

Java

言語の最近のユーザインタフェース用ライブ

ラリ

クラスの例

: JButton

J

で始まる

(16)



j

Swing

で用意されて



o

いる部品

Visual Index

で説明します

この授業では

Applet

は用いません

部品の大雑把な分類

コンテナ

他の部品を貼りつけることができます

: JFrame (

おおもとのコンテナ

), JPanel,

. . .

レイアウト

コンテナの中での部品の配置を決めます

: BorderLayout, GridLayout, BoxLayout,

. . .

ガジェット

操作したり、情報を表示するための部品です

. . .

(17)



j

画面を構成する



o

オブジェクト

フレーム (JFrame) PNG画像 (透明部分あり) パネル (JPanel) ボタン (JButton) アイコン (ImageIcon) パネル (JPanel) パネル (JPanel) ラベル (JLabel) 商品 (Merchandise) お金 (Money) ・GridLayout で横2列に  レイアウト  縦に延びていくことが可能 ・GridLayout で横にレイアウト  境界線とタイトルを指定 ・境界線とタイトルを指定 ・JButton を拡張  JButton はアイコン  や文字列ラベルを  付けられるボタン ・JButton を拡張

(18)



j

画面表示までの流れ

Java 言語のアプリケーションで GUI のために何かを表示させるには、(一般にはアプ リケーションのクラスの構築子の中で) 次を行ないます

1. フレームを生成し、内容枠 (content pane) を取得します

frame = new JFrame(アプリケーションの名前); Container pane = frame.getContentPane();

2. フレームの設定をします // ウィンドウが閉じられる時はアプリケーションを終了させます。 frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE); 3. 必要なものを生成して内容枠に追加します (後述) 4. 追加した中身に合わせてフレームの大きさとレイアウトを調整し、実際に表示し ます frame.pack(); frame.setVisible(true);

(19)



j

中身を追加するコード



o

の抜粋

// レイアウトを指定してパネルを生成します。

JPanel panel

= new JPanel(new GridLayout(0, I NUMBER OF GOODS PER ROW));

// パネルに商品を追加します (i++i = i + 1 の略と思ってください)

for (int i = 0; i < aoGoods.length; i++) { : panel.add( aoGoods[i]); } // 内容枠(pane) の北側(上部)にパネルを追加します。 pane.add(panel, BorderLayout.NORTH); コンテナを生成して、その中に部品を配置します そのためには add() メソッドを用います コンテナの中にコンテナを配置することもできます pane も panel もコンテナです

(20)



j

よく使うコンテナ

JDialog ダイアログウィンドウです JOptionPane を使って簡単に表示できます (Vending.java 参照) JFrame アプリケーション全体のフレームです

メニューバー (menu bar) と内容枠 (content pane) を持ちます JPanel

フレームの中に配置できるコンテナです

レイアウトを指定することで、さまざまな配置が可能となります

JPanel panel = new JPanel(レイアウト);

: //配置する部品の準備

(21)



j

よく使うレイアウト

BorderLayout

コンテナの東 (右) 西 (左) 南 (下) 北 (上) および中央に部品を配置できます

JPanel panel = new JPanel(new BorderLayout());

: //配置する部品の準備

panel.add(部品, BorderLayout.CENTER); // NORTH/SOUTH/EAST/WESTも可

GridLayout

列と行の数を指定して部品を配置できます

JPanel panel = new JPanel(new GridLayout(行の数,列の数));

: //配置する部品の準備

panel.add(部品);

行 (列) の数に 0 を指定すると、何行 (列) かは気にしないことになります それぞれの部品が占める大きさは自動的に揃えられます

(22)



j

よく使うガジェット

JButton

文字列やアイコンをラベルとしたボタンです

JButton button = new JButton(文字列); // あるいは

JButton button = new JButton(文字列, アイコン); // あるいは

JButton button = new JButton(アイコン);

JLabel

文字列やアイコンを表示します

JLabel label = new JLabel(文字列);// あるいは

JLabel label = new JLabel(アイコン);

操作する必要のない画像は、アイコンにして JLabel で表示します

(23)



j

アイコン

ImageIcon

画像を JButton や JLabel で使えるようにします

ImageIcon icon = new ImageIcon(画像の URL);

画像の URL は次のように指定します getClass().getResource(ファイルのパス名) // パス名の例: ”images/10yen.png” これにより、jar ファイルの中の画像を表示できます a a 本当は、URL を指定しなくてもパス名だけでアイコンは作れますが、jarファイルにし て配布することを考えて、この授業では URL を指定する方法を学びます。

(24)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(25)

課題の出題

今週は、ちょっとおさらいしよう、という趣旨の課題です

(26)

課題

10.

セルフチェック

自習用の問題集に解答し、これまで授業で習った内容を復習してください。 手順 1. セルフチェック問題集の web ページ (以下の URL) をブラウザで表示させます。 http://www.soi.wide.ad.jp/quiz/ 2. SOI に登録したメールアドレスとパスワードを用いてログインします。 3. プログラミング入門の問題集に解答します。 成績一覧を参照することで、どの問題に解答したかを確認できます。 評価方法 セルフチェックを行ったこと自体を評価します。

(27)

提出方法

今回、

SOI

のレポートシステムは用いません

ただし、自分が未だ提出していないレポートを提出

するにはよい機会です

課題

8, 9

も是非、提出しましょう

期末制作へのステップとなるレポートは、取り組

んだ方が制作は後でずっと楽になります

〆切

2003/12/14 23:59 JST

(28)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(29)

ミニチェック

(30)



j

これ、何ですか

次は、Java 言語で書かれた Vending クラスの構築子のコードの抜粋です

buttonCancel = new JButton(S LABEL CANCEL); buttonCancel.setEnabled(false);

buttonCancel.addActionListener(this);

panel.add( buttonCancel, BorderLayout.CENTER);

panel, JButton, setEnabled(), addActionListener() はそれぞれ何ですか? 変数? 値? 型? メソッド? 構築子? クラス? インスタンス?

_buttonCancel, this はそれぞれ何型ですか? S_LABEL_CANCEL の型は?

(31)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(32)

練習問題

:

自動販売機を改造する

自動販売機のおさらい

(33)



j

簡単な自動販売機の例

vending.jar

授業ページから

ダウンロード

しよう

実行してみよう

方法

1: vending.jar

のアイコンをダブルクリック

方法

2:

z:> java -jar vending.jar <Enter>

どんな点が簡単か

お金も商品も無尽蔵であることが前提

商品の価格は

1

種類

(34)



j

自動販売機のソース



o

ファイルを得る

次のコマンドで all-in-one jar ファイルを解凍して、中のソースファイルを取り出して ください

z:> jar xvf vending.jar <Enter> オプションの説明 x: 解凍 v: 詳細表示 f: 圧縮ファイル指定 Vending.java がソースファイルです images ディレクトリの中には、自動販売機のプログラムで用いる画像ファイル (PNG a形式) が格納されています a

(35)



j

練習問題

:

改造しよう

次のように自動販売機を改造してください (Vending.java を書き換えてください) (先週の改造が済んでいることを前提とします) おつりを自動的に出す 商品を買った後の残りの投入金額が、最も安い商品の値段に満たなければ、 ボタンが押されなくてもおつりを出すようにします プロジェクタに完成例を映して説明します

(36)



j

インタフェース

インタフェースは、クラスに似ています クラスと同様、ある型を表します ただし、定数と中身のないメソッドだけを定義できます クラスがカテゴリーを表すのに対し、インタフェースは能力を表すと考えれ ばよいでしょう extends ではなく、implements と書いて使います 例: public class A implements B {. . .}

意味 1: クラス A は、インタフェース B (のメソッド) を実装します 意味 2: クラス A は、インタフェース B であるかのように扱えます · クラス A のインスタンスは、インタフェース B で定義される能力を持つ ものとして扱えます 実装するインタフェースは ‘,’ で区切っていくつも指定できます ActionListener インタフェース よく使われるインタフェースです

(37)



j

インタフェースの例

public class Vending implements ActionListener {

: public Vending() { : // addActionListener()ActionListener 型の引数を受け取ります buttonCancel.addActionListener(this); : }

public void actionPerformed(ActionEvent event) {

Object source = event.getSource(); // イベントの発生源を取得します

: // ボタンが押されたときの処理を行ないます } : } ActionListener を実装するクラスは、必ず actionPerformed() を定義しなければなり ません

(38)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(39)

状態遷移からクラスへ

具体的な翻訳の手法は、みなさんの状態遷移図が整理されてから説明します 今週は一般論を説明します

(40)



p

状態遷移からクラスの



o

設計へ

GUI

外界からのイベントを受け付ける場合 イベントを受けるガジェットを考えます (ボタンやテキストフィールドなど) イベントは基本的に ActionListener の actionPerformed() で受けます ユーザのクリックやテキスト入力 タイマの発火 ウィンドウのクローズボタンの処理を行ないます 消滅のイベントに対応します プログラム内部から使われるオブジェクトの場合 イベント毎にメソッドを用意します 共通 状態をフィールドで区別します

(41)



p

状態遷移からクラスの



o

設計へ

CLI

外界からのイベントを受け付ける場合 コマンドプロンプトからの入力を受けつけます ファイルリーダのクラス (後述) を用います プロンプトを表示してから入力を読み込みます 終了するための入力も用意します (“quit” コマンドなど) · 消滅のイベントに対応します プログラム内部から使われるオブジェクトの場合 イベント毎にメソッドを用意します 共通 状態をフィールドで区別します

(42)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(43)

スロットマシンで見る便利な

クラス

/

インタフェース

Random

Date/SimpleDateFormat

Timer

JButton/ImageIcon

(44)



j

スロットマシンを



o

使ってみよう

授業ページからダウンロードしよう

All-in-one jar

ファイル

(

slot-machine.jar

)

実行

z:> java -jar slot-machine.jar

展開

z:> jar xvf slot-machine.jar

展開して得られるソースコードのファイルは

(45)



j

SlotMachine

の機能



o

の紹介

スロットマシンをモノマネします

レバーを引く

(

マウスをプレスする

)

とリールが回

(

絵柄の高速切り替え表示

)

します

レバーを離す

(

マウスをリリース

)

とリールが左か

ら順に停止します

本物と同程度の確率で絵柄が揃います

ウィンドウの左上に、プログラムを起動してからの

経過時間が表示されます

これを見て、遊び過ぎないようにしましょう

タイムトライアルと捉えても面白いでしょう

コインの投入、配当金などの娯楽性の高い要素はあえ

て外してあります

(46)



j

SlotMachine



o

用いている部品

Random (乱数発生器) リールの絵柄の選択に使用 実際のスロットマシンと同じアルゴリズムを用いています Date/SimpleDateFormat (時刻とその表現形式) 経過時間の表示に使用 Timer (タイマ) 経過時間やリールの絵柄の表示を行なうタイミングの取得に使用 JButton/ImageIcon (ボタンとアイコン) リールおよびレバーの表現に使用

(47)



j

java.util.Random

乱数発生器です 構築子 Random(long seed) seed: 疑似乱数を発生させるための種 主要なメソッド int nextInt() 乱数を取得します 想定される用途 「おみくじ」、「モグラ叩き」など、偶然の要素があったり、物のいろいろな振る 舞いをシミュレートする場合

(48)



j

Random

の使い方

random = new Random(System.currentTimeMillis());

現在の時刻 (ミリ秒) を種にする乱数発生器を生成

:

int iRandom = random.nextInt(); 乱数を取得

種が同じだと、全く同じ数列が生まれてしまい、乱数にならないので、毎回変える必 要があります

System.currentTimeMillis() は 1970 年 1 月 1 日 00:00:00 GMT を基点とする ミリ秒数なので、毎回、異なります

(49)



j

Random

の使い方



o

ちょっと高度に

:

int iRandom = random.nextInt(); 乱数を取得

変数名=配列名 [Math.abs(iRandom) % 配列名.length]; 配列の中に入っている何かを選びます (Math.abs() は絶対値の取得) : 配列の中に、選ばれるもの (大吉、吉、凶とか) を適当にちりばめます 配列の要素数が 32 あるとすると . . . 大吉を 1 個置くと 321 の確率で選ばれます 凶を 3 個置くと 323 の確率で選ばれます

(50)



j

java.text



o

.SimpleDateFormat

日付・時刻の書式を設定するフォーマッタです 構築子 SimpleDateFormat(String pattern) pattern: 日付・時刻の書式(: ”HH:mm:ss” (::)) 主要なメソッド

String format(Date date) dateを表す文字列を取得します

想定される用途

(51)



j

java.util.Date

ある時刻を表します 構築子 Date(long date) date: 19701100:00:00 GMT を基点とするミリ秒数 現在の時刻を表すミリ秒数は、System.currentTimeMillis() で取得できます 想定される用途 「時計」、「ストップウォッチ」など

(52)



j

SimpleDateFormat/



o

Date

の使い方

format = new SimpleDateFormat(”HH:mm:ss”);::秒 形式 :

time = new Date(System.currentTimeMillis()); 現在の時刻 String s = format.format( time); ::秒 形式の文字列

ストップウォッチのように、ある時刻を基準とする相対時刻が必要な場合は、_format に GMT との時差をゼロにするように設定する必要があります

そうしないと、時差分が加算されて表示されます “SlotMachine.java” を参照してください

(53)



j

javax.swing.Timer

一定の間隔で繰り返し発火するタイマです 構築子

Timer(int delay, ActionListener listener)

delay: 発火する間隔 (単位: ミリ秒) listener: タイマの発火イベントを受けつけるオブジェクト 主要なメソッド void start() タイマを開始します void stop() タイマを停止します 想定される用途 「時計」、「花」など時間の経過を表す必要のあるもの 「エレベータ」などのように、空間を移動するものも、時間の経過による変 化を表す必要があります

(54)



j

Timer

の使い方

class クラス名 implements ActionListener{

:

timer = new Timer(1000, this); 1 秒毎に発火するタイマ :

timer.start(); タイマを開始

:

1 秒毎に呼び出されます

public void actionPerformed(ActionEvent event) {

Object source = event.getSource(); イベントの発生源を取得 if (source == timer) {

ここで 1 秒毎の処理

:

(55)



j

javax.swing.JButton

Swing におけるボタンで、ラベルにテキストやアイコンを使用できます 構築子 JButton(Icon icon) icon: ラベルとして使用するアイコン 主要なメソッド void addActionListener(ActionListener l) l でイベントを受けつけます

void setIcon(Icon icon) アイコンを再設定します

想定される用途

(56)



j

javax.swing.ImageIcon

Icon

を実装し、画像ファイルをアイコンとして使用で

きます

構築子

ImageIcon(String filename) filename: 画像ファイルのパス名 ImageIcon(URL location) location: 画像ファイルの場所

想定される用途

「自動販売機」、「モグラ叩き」など

GUI

を用いるプログラム一般

(57)



j

JButton/ImageIcon



o

の使い方

class クラス名 implements ActionListener{

:

icon = new ImageIcon(

getClass().getResource(画像ファイルの相対パス名));

getClass().getResource() は、

jar ファイルからでもアイコンを正しく表示させたい場合に必要

button = new JButton( icon); button.addActionListener(this);

:

ボタンがクリックされると呼び出されます

public void actionPerformed(ActionEvent event) { Object source = event.getSource();

if (source == button) {

button.setIcon(イメージアイコン);

例えばこのようにアイコンを切り替えます

(58)



j

おまけ

MouseListener (マウスのイベントを取得するインタフェース) レバーを引き下げたり、離したりするイベントの取得に使用 java.awt.event.MouseListener マウスのクリック、プレス、リリースなどを受け付けることができます 使い方は “SlotMachine.java” を参照してみてください

(59)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(60)

ファイルからの入力

標準入力

a

を含みます

a

(61)



j

INU

電卓を



o

使ってみよう

授業ページからダウンロードしよう

All-in-one jar

ファイル

(

inucalc.jar

)

実行

z:> java -jar inucalc.jar

展開

z:> jar xvf inucalc.jar

展開して得られるソースコードの主ファイルは

“InuCalc.java”

です。

他にもスタック計算機本体と例外のソースファイ

ルがあります

(62)



j

INU

電卓の機能



o

の紹介

エラー処理をきちんと行なっています

例外の使い方の参考にしてください

計算履歴や計算結果を選択し、コピーできます

メニューの使い方の参考にしてください

次のオプションで

CLI

版が起動します

z:> java -jar inucalc.jar -cli

コマンドプロンプトから計算式を入力できます

終わる時は

“quit”

を入力します

(63)



j

InuCalc

で用いている



o

部品

BufferedReader/InputStreamReader (ファイルリーダ) CLI 版でのユーザからの入力に使用 あと、注釈で書き忘れましたが . . .

public, private に加えて、protected というのを用いています protected を指定すると、派生クラスのみへの公開となります

(64)



j

java.io.BufferedReader

効率的な読み込みができるファイルリーダです 構築子 BufferedReader(Reader in) in: ファイルリーダ 主要なメソッド String readLine() 1 行分を入力します

(65)



j

java.io



o

.InputStreamReader

ファイルリーダです 構築子 InputStreamReader(InputStream in) in: 入力ストリーム 入力ストリームとして System.in を指定すると、標準入力から入力できます

(66)



j

java.io.FileInputStream

ファイルから作る入力ストリームです System.in の代わりに InputStreamReader の構築子で指定すると、任意のファ イルから読み込めるようになります 構築子 FileInputStream(String name) name: 入力するファイルのパス名

(67)



j

標準入力からの入力



o

を受ける方法

:

BufferedReader reader

= new BufferedReader(new InputStreamReader(System.in)); System.out.print(プロンプト文字列); プロンプトを表示 try {

String s = reader.readLine(); 1 行分の入力を取得

入力した文字列を処理 } catch (IOException unused) {

エラーメッセージの表示など }

:

(68)

今日のメニュー

はじめに 課題レビュー 課題の出題 ミニチェック 練習問題: 自動販売機を改造する 状態遷移からクラスへ スロットマシンで見る便利なクラス/インタフェース ファイルからの入力 実習

(69)

実習

参照

関連したドキュメント

本時は、「どのクラスが一番、テスト前の学習を頑張ったか」という課題を解決する際、その判断の根

「1 建設分野の課題と BIM/CIM」では、建設分野を取り巻く課題や BIM/CIM を行う理由等 の社会的背景や社会的要求を学習する。「2

題が検出されると、トラブルシューティングを開始するために必要なシステム状態の情報が Dell に送 信されます。SupportAssist は、 Windows

基本的金融サービスへのアクセスに問題が生じている状態を、英語では financial exclusion 、その解消を financial

総務部 10/27 上野 12/7 多摩 12/9 井の頭 12/16 葛西 12/16.

⑤  日常生活・社会生活を習得するための社会参加適応訓練 4. 

 筆記試験は与えられた課題に対して、時間 内に回答 しなければなりません。時間内に答 え を出すことは働 くことと 同様です。 だから分からな い問題は後回しでもいいので