Microsoft PowerPoint - prog09.ppt

Similar documents
Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog08.ppt

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog08.ppt

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - prog10.ppt

Microsoft PowerPoint - prog10.ppt

オブジェクト指向プログラミング・同演習 5月21日演習課題

プログラミングA

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Prog2_9th

デジタル表現論・第6回

ガイダンス

メソッドのまとめ

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

Microsoft PowerPoint - prog12.ppt

Programming-C-9.key

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

PowerPoint プレゼンテーション


Microsoft PowerPoint - OOP.pptx

GEC-Java

Prog1_10th

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

PowerPoint プレゼンテーション

GEC-Java

プログラミング基礎I(再)

JavaプログラミングⅠ

Microsoft PowerPoint - prog08.ppt

Java言語 第1回

Microsoft PowerPoint - prog07.ppt

JavaプログラミングⅠ

Microsoft PowerPoint ppt

プログラミング入門1

プログラミング入門1

PowerPoint プレゼンテーション

プログラムの基本構成

メソッドのまとめ

Prog1_15th

PowerPoint Presentation

JavaプログラミングⅠ

2

スライド 1

プログラミング入門1

Microsoft PowerPoint - chap10_OOP.ppt

Javaプログラムの実行手順

Prog2_10th

Prog1_6th

デジタル表現論・第4回

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

プログラミング入門1

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

JavaプログラミングⅠ

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

プログラミング入門1

例外処理とファイル入出力

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

JavaプログラミングⅠ

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 3 回コレクションと例外処理 テクノロジックアート 瀬嘉秀

Make the Future Java FY13 PPT Template

Microsoft Word - java a.doc

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

リファレンス,配列 例外処理

PowerPoint プレゼンテーション

PowerPoint Presentation

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

問題1 以下に示すプログラムは、次の処理をするプログラムである

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

Java講座

JavaプログラミングⅠ

応用プログラミング 2004/11/23 データの入出力 データの入出力データをキーボードからコンピュータに入力することや CRT に表示すること, さらにハードディスク (HDD) や MO などに保存されているファイルからデータをコンピュータに読み込むことや ( 逆に ) データをこれらの装置に

JavaプログラミングⅠ

JavaプログラミングⅠ

Microsoft PowerPoint - prog04.ppt

JAVA入門

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

JavaプログラミングⅠ

Microsoft PowerPoint - prog03.ppt

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

Microsoft Word - problem3.doc

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

Microsoft PowerPoint - prog06.ppt

Android Layout SDK プログラミング マニュアル

PowerPoint プレゼンテーション

プログラミング入門1

JavaプログラミングⅠ

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

2

2

問題1 以下に示すプログラムは、次の処理をするプログラムである

Transcription:

プログラミング言語 3 第 09 回 (2007 年 11 月 26 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/40 1

今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 11 月 27 日分と書いてある部分が 本日の教材です 本日の内容 前回の課題の解答 例外処理 3/40 前回の課題の解答 4/40 2

前回の課題 その 1: 次のような仕様を満たすプログラムを書きなさい 文字列 Hello World を全部大文字にし 文字の並びを逆順にしたものを 画面に出力する 5/40 プログラム例 public class Sample08f{ public static void main(string[] args){ String ss01 = "Hello World"; String ss02; StringBuffer sb; ss02=ss01.touppercase(); sb=new StringBuffer(ss02); sb.reverse(); System.out.println(sb); 6/40 3

方針 : プログラムの流れ 大文字にするのに String クラスのメソッド touppercase 文字列を逆順するのに StringBffer クラスのメソッド reverse を利用する プログラムの流れ 1. String クラスのインスタンス ss01 と ss02 StringBffer クラスのインスタンス sb を生成する ss01 には "Hello World" を代入 2. ss02=ss01.touppercase() として 全部大文字にした結果を ss02 に代入 3. sb に ss02 の値を代入する 4. sb.revers() として 文字列を逆順にする 7/40 プログラム例 public class Sample08f{ public static void main(string[] args){ String ss01 01 = "Hello World"; String ss02; StringBuffer sb; ss01, ss02, sb を宣言 ss01にhello Worldを保存 ss02=ss01.touppercase(); sb=new StringBuffer(ss02); sb.reverse(); System.out.println(sb); 8/40 4

プログラム例 public class Sample08f{ public static void main(string[] args){ String ss01 = "Hello World"; String ss02; ss01.touppercase() は StringBuffer sb; ss01の内容 "Hello World" を大文字にしたものを返す ss02= 02=ss ss01. 01.toUpperCase touppercase(); sb=new StringBuffer(ss02); そして 戻り値をss02 sb.reverse(); に保存 System.out.println(sb); Stringクラスのメソッドは 保存している文字列自体は変更しないことに注意 9/40 プログラム例 public class Sample08f{ public static void main(string[] args){ String ss01 = "Hello World"; String ss02; StringBuffer sb; sbの保存している文字列を ss02の内容に ss02=ss01.touppercase(); sb=new StringBuffer(ss ss02); sb.reverse(); System.out.println(sb); 10/40 5

プログラム例 public class Sample08f{ public static void main(string[] args){ String ss01 = "Hello World"; String ss02; StringBuffer sb; sb.reverse() はsbが保存している文字列を逆順にする ss02=ss01.touppercase(); sb=new StringBuffer(ss02); sb.reverse(); sbに保存されている文字列は System.out.println(sb); HELLO WORLDから DLROW OLLEHに StringBufferクラスのメソッドは 保存している文字列自体を変更できることに注意 11/40 プログラム例 public class Sample08f{ public static void main(string[] args){ String ss01 = "Hello World"; String ss02; StringBuffer sb; ss02=ss01.touppercase(); sb=new StringBuffer(ss02); sb.reverse(); System.out.println println(sb sb); ); コンソールに DLROW OLLEH と表示される 12/40 6

前回の課題 その 2: Sample08a.java ~ Sample08e.java をコンパイルして実行しなさい webに答えがあがっているのでえがあがっているので 各自各自で見ておくことておくこと 13/40 例外処理 14/40 7

例外処理とは? エラーが発生したとき 例外処理を行う機能があります エラーは 色々な場面で起こる可能性があります 例 : ファイルをオープンしようとしたら そのファイルが無い! ある文中でエラーが発生したら そのエラーに応じて 何らかの処理を行うことができます 文 エラー 01 発生 例外処理その 1 正常に終了 エラー 02 発生例外処理その 2 次の文 15/40 Java と例外 エラーが起きたときに行う例外処理を 必ず書かなければならないものがあります チェック例外と呼ばれます 書かれていないと コンパイル時にエラーがでます チェック例外が発生する可能性があるメソッドは 必ず 例外処理も書かなければなりません エラーが起きたときに行う例外処理を 書く必要がないものもあります 非チェック例外と呼ばれます 16/40 8

例外処理の書き方 try と catch そして finally を使って行います // // 例外を検出する文を書く catch ( 例外のタイプその 1 変数変数 ){ ){ // // 例外が発生したときに行う文を書く catch ( 例外のタイプその 2 変数変数 ){ ){ // // 例外が発生したときに行う文を書く finally{ // // エラーの有無 種類にかかわらず // // 必ず実行する文を書く 17/40 例外処理の流れ try{ // 文 エラー 01 発生 catch ( 例外のタイプその 1 変数 ){ // 文 正常に終了 エラー 02 発生 catch ( 例外のタイプその 2 変数 ){ // 文 finally{ // 文 18/40 9

try について try の中には 例外処理が発生する可能性がある文を書きます // // 例外を検出する文を書く 例外処理を必ず書かなければならないメソッドは try の中に書く必要があります 例外が発生した場合 ただちに catch の内容が実行されます 19/40 catch について catch の中には try で発生した例外処理に対して どのような処理を行うかを記述します catch ( 例外のタイプその 1 変数変数 ){ ){ // // 例外が発生したときに行う文を書く catch ( 例外のタイプその 2 変数変数 ){ ){ // // 例外が発生したときに行う文を書く 発生する例外のタイプに対して それぞれ 行う処理を記述することができます 実際には 例外のタイプはクラスになっています 変数には エラーの原因などが格納されます 20/40 10

例外のタイプ 例外のタイプはクラスになっています これらのものは Error クラスをスーパークラスにするもの Exception クラスをスーパークラスにするものの 2 種類があります 例外を自作することもできますが この授業ではやりません 21/40 finally について finally の中には 例外処理発生する しないに関わらず 必ず実行される文を書きます finally{ // // エラーの有無 種類にかかわらず // // 必ず実行する文を書く catchの中に return などの処理を停止する命令があったとしても finallyは必ず実行実行されます 22/40 11

サンプルプログラムその 1 import java.io.*; public class Sample09a{ FileReader fr fr = new new FileReader("test.txt"); catch(filenotfoundexception return; System.out.println("END"); FileReader fr = new FileReader("test.txt"); は ファイル test.txt を開く命令です 23/40 サンプルプログラム解説 import import java.io java.io io.*; io.*; ファイルの入出力をするためには パッケージjava.ioに含まれるメソッドが必要なので 今回はインポートした public class Sample09a{ FileReader fr fr = new new FileReader("test.txt"); catch(filenotfoundexception return; System.out.println("END"); 24/40 12

サンプルプログラム解説 import java.io.*; try 文の中に関して 例外処理が発生するかを監視する public class Sample09a{ try{ try{ FileReader FileReader fr fr = new new FileReader("test.txt"); ("test.txt"); catch(filenotfoundexception return; System.out.println("END"); FileReader fr = new FileReader("test.txt"); は ファイル test が存在しないとき FileNotFoundException という例外処理を起こす 25/40 サンプルプログラム解説 import java.io.*; public class Sample09a{ FileReader fr fr = new new FileReader("test.txt"); catch(filenotfoundexception FileNotFoundException System.out.println println("error:"+ ("Error:"+ e); e); return; return; System.out.println("END"); FileNotFoundExcept ion の例外処理が発生したときの処理内容を書く エラーの原因などは e に保存される 26/40 13

サンプルプログラム解説 import java.io.*; public class Sample09a{ FileReader fr fr = new new FileReader("test.txt"); catch(filenotfoundexception FileNotFoundException System.out.println println("error:"+ ("Error:"+ e); e); return; return; System.out.println("END"); エラーの原因を出力し 終了する 27/40 サンプルプログラムその 2 コンパイル時にエラーが出る例 : import java.io.*; public class Sample09b{ FileReader fr fr = new new FileReader("test.txt"); new FileReader("test.txt"); は キャッチ例外 FileNotFoundException を伴うので 必ず例外処理を書かなければいけません 書かなかった場合 コンパイル時にエラーがでます 28/40 14

サンプルプログラムその 3 import java.io.*; public class Sample09c{ FileReader fr fr = new new FileReader("test.txt"); catch(filenotfoundexception finally{ finally{ System.out.println println("finally"); ("FINALLY"); System.out.println("END"); finally はエラーの有無にかかわらず 必ず実行される 29/40 サンプルプログラムその 4 import java.io.*; public class Sample09d{ FileReader fr fr = new new FileReader("test.txt"); catch(filenotfoundexception return return ; finally{ finally{ System.out.println println("finally"); ("FINALLY"); System.out.println("END"); finally はエラーの有無にかかわらず 必ず実行される 30/40 15

サンプルプログラムその 5 import java.io.*; public class Sample09e{ try{ try{ FileReader fr fr = new new FileReader("test.txt"); fr.close(); catch(filenotfoundexception FileNotFoundException return ; catch(ioexception IOException return ; try の中には 例外を発生させる可能性がある文を 2 つ以上書ける tryの中で発生する可能性のある例外それぞれに catchを書ける 31/40 Exception 例外 複数の例外が発生する場合は 基本的に catch を複数書くことで対応します 同じスーパークラスに属する例外に対しては まとめて書くことができます 例えば Exception をスーパークラスにする例外に対しての catch は まとめて catch(exception // // 文 のように書くことができます 32/40 16

サンプルプログラムその 6 Sample09e 中の FileNotFoundException と IOException は 両方 Exc eption クラスをスーパークラスに持つので まとめて書いてみると import java.io.*; public class Sample09f{ FileReader fr fr = new new FileReader("test.txt"); fr.close(); catch(exception catch(exception return ; Exceptionをスーパークラスにする例外に対して まとめて対応 33/40 スロー あるメソッド中でエラーが発生したとき 例外処理を メソッドを呼び出したメソッド中で処理することができます 行いたい場合 メソッドを宣言するときに throws 例外のタイプ 1, 1, 例外のタイプ 2, 2, を書きます 例えば public static void void exctst() throws throws FileNotFoundException FileNotFoundException { FileReader ft ft = new new FileReader("test.txt"); System.out.println("File Open"); のように書きます ここで try を書く必要はありません 34/40 17

スロー スローを書いたメソッドを呼び出したメソッド側では 例外処理を書く必要があります スローを書いたメソッドを使用する場合は try の中で使用し 例外処理の内容を catch の中に書きます 例えば 1 ページ前のメソッド exctst を使う場合 exctst(); catch(filenotfoundexception return ; のように書きます 35/40 サンプルプログラムその 7 import java.io.*; public class Sample09g{ try{ try{ exctst(); exctst(); catch(filenotfoundexception FileNotFoundException return ; 例外処理をスローしてくるメソッド exctst を使用するので try と catch が必要 例外処理は 呼び出し元のメソッドにスロー public static void void exctst() throws throws FileNotFoundException{ FileReader ft ft = new new FileReader("test.txt"); System.out.println("File Open"); 36/40 18

非 catch 例外について 非キャッチ例外の例としては 0 で除算を行う ArithmeticEception 例外が発生 配列のサイズをオーバーしてアクセスする ArrayIndexOutOfBoundsException 例外が発生 等があります catch を必ずしも書く必要はありません コンパイル時にエラーを出しません 37/40 サンプルプログラムその 8 public class Sample09h{ int[] int01 = {1,2,3,4,5,6,7,8,9,10; int int int02=5; int02=5; System.out.println(500/int02); System.out.println(int01[int02]); catch(exception return; 38/40 19

非 catch 例外とスロー 非キャッチ例外をスローするメソッドを書く場合 メソッドを書くときに throws 例外のタイプを書く必要はありません 書いても構いません 39/40 サンプルプログラムその 9 public class Sample09i{ test(); catch(exception return; public static void void test(){ int[] int01 = {1,2,3,4,5,6,7,8,9,10; int int int02=5; System.out.println(500/int02); System.out.println(int01[int02]); スローが書かれていない 40/40 20