情報処理技法 (Javaプログラミング)2 第2回 前期の復習(2)

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
プログラミング第5回 1 while ループ 文字列の操作
第11回Javaゼミ 11.1 ファイルとディレクト リ 11.2 文字ストリーム 11.3 バッファ付き文字スト リーム 2006/06/28 神津 健太.
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
ゴールデンウィークの課題 (提出日:2009/05/12) 2009/05/12に小テストがあります!
JavaScript プログラミング入門 2006/11/10 神津.
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
IO - 入出力 小西 亨.
プログラミング基礎I(再) 山元進.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
~手続き指向からオブジェクト指向へ(Ⅰ)~
プログラミング基礎I(再) 山元進.
アルゴリズムとプログラミング (Algorithms and Programming)
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
C言語 配列 2016年 吉田研究室.
第13回 プログラミングⅡ 第13回
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
第6章 2重ループ&配列 2重ループと配列をやります.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
第20章 Flyweight ~同じものを共有して無駄をなくす~
JAVA入門② 変数と型 式と演算子 制御文.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
プログラミング言語入門 手続き型言語としてのJava
JAVA入門.
サブゼミ第9回 実装編③ 永続化とjava.ioパッケージ.
例外処理 と ファイル入出力 情報システム学科 平塚 聖敏.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
リファレンスの復習と例外処理 2005年6月14日 海谷 治彦.
暗号技術 ~JAVAプログラム③~ (7週目)
EclipseでWekaのAPIを呼び出す
アルゴリズムとプログラミング (Algorithms and Programming)
暗号技術 ~JAVAプログラム①~ (5週目)
第1回 プログラムの基本 他人が読めるプログラムを書く.
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
2016年度 植物バイオサイエンス情報処理演習 第6回 情報処理(4) データを加工する・2
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
オブジェクト・プログラミング 第8回.
C言語 はじめに 2016年 吉田研究室.
オブジェクト プログラミング 第2回 プログラムの基本.
アルゴリズムとプログラミング (Algorithms and Programming)
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
プログラミング入門 電卓を作ろう・パートI!!.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとプログラミング (Algorithms and Programming)
暗号技術 ~JAVAプログラム②~ (6週目)
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
第5回 プログラミングⅡ 第5回
JAVA入門⑥ クラスとインスタンス.
情報処理技法 (Javaプログラミング)1 第2回 コンピュータが情報を扱うには? (変数, データ型, 代入)
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
情報処理Ⅱ 2005年11月25日(金).
プログラミング入門2 第5回 配列 変数宣言、初期化について
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
C言語講座第5回 2017 構造体.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
情報処理技法 (Javaプログラミング)1 第4回 語句や文章を扱いたいときは?
情報処理技法(Javaプログラミング)1 第8回 同じ処理を何回も繰り返すには?
Presentation transcript:

情報処理技法 (Javaプログラミング)2 第2回 前期の復習(2) 人間科学科コミュニケーション専攻 白銀 純子 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

第2回の内容 情報処理技法(Javaプログラミング)1の復習(続き) Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

前回の出席課題の解答 Javaプログラムを実行させる仕組みを、下記のキーワードを使って 説明しなさい。 キーワード: ソースコード, Javaバイトコード, Javaコンパイラ, JVM 人間がソースコードを書き、それをJavaコンパイラに入力する。そうすると、Javaコンパイラは ソースコードを翻訳したJavaバイトコードを作成する。人間がJavaバイトコードをJVMに 入力すると、JVMはプログラムを1行ずつ命令を機械語に通訳してコンピュータに伝え、 コンピュータがその命令を実行する。 解答例: Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外処理 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

プログラムで発生するエラー プログラムの実行時に発生する可能性のあるエラー 配列で、利用可能な範囲外の添え字を使おうとしたとき String型の値をint型に変換できないとき Ex. 入力された文字列をint型に変換したいときに、「abc」という文字列が入力される、など 入力しようとしたファイルが存在しないとき 数を0で割ろうとしたとき etc. プログラムを実行してみなければ、発生するかどうかわからないエラー = コンパイル時には発見できないエラー 「例外」と呼ぶ Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外に対処するには? 例外が発生すると... 例外を発生させないためには...? プログラムの実行がその時点で終了してしまう 例外が発生しないよう、プログラムを書いておく 完全には難しい(入力データなどは実行時でないと判断不可) 例外に対処するための処理をプログラムに書いておく 例外が発生しても、それなりの処理を行う 例外処理 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外処理の書き方(基本形) try { } 例外が発生する可能性のある処理 catch (例外の種類を表すクラス名 変数名) { 例外が発生したときに行う処理 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

try~catch try catch 例外が発生する可能性のある処理を、「try{~}」の間に書く Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

tryの処理(1) 例外が発生する可能性のある処理 標準入力の処理 ファイル入出力の処理 配列を扱う処理 文字列をint型に変換する処理 割り算の処理 etc. Javaの文法上の規則として、例外処理を書かなければならないもの (書かなければコンパイルエラー) 文法上の規則としては、例外処理を書く必要はないが、必要に応じて自分の 判断で例外処理を書くもの Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

tryの処理(2) 例外が発生する可能性のあるポイント tryで、例外が発生する可能性のあるポイントをきちんと囲む必要 このポイントを囲んでいなければ、例外処理の意味はなし 標準入力やファイル入出力では、このポイントを囲んでいなければ、コンパイルエラー Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外処理の書き方(基本形) try { } 例外が発生する可能性のある処理 catch ( 例外の種類を表すクラス名 変数名) { 例外にも様々な種類 例外が発生したときに行う処理 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

catchの処理(例外の種類) 例外の種類を表すクラス名 例外には、様々な種類が存在 tryで発生する可能性のある例外の種類を指定 入出力に関係する例外(入出力ができなかった場合に例外が発生) 配列の添え字に関する例外(利用可能な範囲外の添え字を使おうとしたときに例外が 発生) 割り算に関する例外(数を0で割ろうとしたときに例外が発生) tryで発生する可能性のある例外の種類を指定 適切な種類を指定しておかないと、例外処理ができない Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外の種類(IO)(1) IOException 入出力に関する例外 標準入力・ファイル入力で、入力ができない場合 ファイル出力で、出力ができない場合 標準入力: プログラムをターミナルから起動していない場合などは、入力不可能 ファイル入力: 読み込もうとしたファイルが、「読み込み」のアクセス権がない 場合などは入力不可能 書き込もうとしたファイルが、「書き込み」のアクセス権がない場合などは出力不可能 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外の種類(IO)(2) IOException 分類されているパッケージ: java.io 「import java.io.IOException」または「import java.io.*;」がなければコンパイルエラー 例外が発生する可能性のあるポイントが、tryの中に書かれていなければ、 コンパイルエラー ポイント: readLine()メソッド, ファイルを開く処理など Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外の種類(IO)(3) 例外が発生する 可能性のあるポイント 発生する例外は入出力 関係、と指定 標準入力 ファイル入力 String str; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { str = br.readLine(); } catch (IOException e) { 例外が発生する 可能性のあるポイント (実際に入力をしている ポイント) 発生する例外は入出力 関係、と指定 ファイル入力 String str; try { FileReader fr = new FileReader("入力するファイルの名前"); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); } catch (IOException e) { Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

catchの処理(内容)(例2) try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); str = br.readLine(); int num = Integer.parseInt(str); } catch(NumberFormatException e) { System.out.println("入力されたデータは数値ではないため、処理できません。"); Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

複数種類の例外に対する処理 1つのtryの中に複数種類の例外が発生することも FileNotFoundExceptionの 可能性 String str; int num; try { FileReader fr = new FileReader("sample.txt"); BufferedReader br = new BufferedReader(fr); str = br.readLine(); num = Integer.parseInt(str); br.close(); } FileNotFoundExceptionの 可能性 IOExceptionの可能性 NumberFormatExceptionの 可能性 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外処理の書き方(応用) try { } 例外が発生する可能性のある処理 catch (例外の種類を表すクラス名1 変数名) { 書いてもOK 1の例外が発生したときに行う処理 2の例外が発生したときに行う処理 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

例外処理の書き方(応用)(例) catchを必要なだけ並べる String str; int num; try { FileReader fr = new FileReader("sample.txt"); BufferedReader br = new BufferedReader(fr); str = br.readLine(); num = Integer.parseInt(str); br.close(); } catch(FileNotFoundException e) { System.out.println("このファイルは存在しません。"); catch(IOException e) { System.out.println("このファイルからデータを読み込むことはできません。"); catch(NumberFormatException e) { System.out.println("読み込んだデータを数値に変換することができません。"); catchを必要なだけ並べる Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

ファイル入力 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~入力~(全体像) try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~入力~(詳細2) 「入力するファイル名」は、単なる文字列でも、変数に代入された文字列でも良い try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); どのファイルの内容を入力するか、ファイルの名前を決める 「入力するファイル名」は、単なる文字列でも、変数に代入された文字列でも良い 入力するファイルは、Javaプログラムと同じ場所に置いておく Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~入力~(詳細4) try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); 「読むために」ファイルを開く作業(「fr」の部分は、 FileReaderの変数名を入れること) Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~入力~(詳細5) try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); 開いたファイルを1行ずつ(文字列として)読んでいく(「br」の部分は、BufferedReaderの変数名を入れること) 1つ目の「br.readLine()」で1行目を読む 2つ目の「br.readLine()」で2行目を読む ........ ※ただし、2行目を読んだあとに1行目をもう一度 読んだり、 2行目をとばして3行目を読む、ということはできない Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~入力~(詳細6) try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); try { String str; FileReader fr = new FileReader(入力するファイル名); BufferedReader br = new BufferedReader(fr); str = br.readLine(); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); ファイルを読み終わった後、ファイルを閉じる作業 (プログラムでは、開いたファイルは必ず閉じる作業をしなければならない) (「br」の部分は、BufferedReaderの変数名、「fr」の部分は FileReaderの変数名を入れること) Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

ファイル入力の例 プログラム: 「Sample.txt」の中身: 情報処理技法 サンプルファイル 出力結果: 情報処理技法 try { String str; FileReader fr = new FileReader("Sample.txt"); BufferedReader br = new BufferedReader(fr); str = br.readLine(); System.out.println(str); br.close(); fr.close(); } catch (IOException e) { System.out.println("指定されたファイルの入力ができません。"); 「Sample.txt」の中身: 情報処理技法 サンプルファイル 情報処理技法 出力結果: Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

ファイルの最後の行まで読み込んでしまうと、その次の行を 読み込もうとしたときに「読み込み不可能」という結果が返ってくる 何行も書かれているファイル ファイルを最初から最後まで全部読むには? 「br.readLine()」をファイルの行数分書く? ファイルの行数が多いときは? ファイルの行数が何行かわからないときは? 「ファイルが読み込み可能」 という条件でwhile文を使う ファイルの最後の行まで読み込んでしまうと、その次の行を 読み込もうとしたときに「読み込み不可能」という結果が返ってくる Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

「読み込み可能」という条件 String str; while (br.ready()) { 読み込んだ文字列に対する処理 } 読み込んでいない行が存在すれば、「true」という結果 読み込んでいない行が存在しなければ、「false」という結果 ファイルの終わりに達していない限り、whileの中身を実行する Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

while文の中身は... while文の中身(読み込んだ1行1行の扱い)は、プログラムの目的に 応じて書く strの内容を配列に代入する →ファイルの1行1行を配列として扱う strの内容を数値に変換する(そして配列に代入する) strの内容を細かく分解する(例えばスペースで区切って単語に分解する) etc. Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

ファイル出力 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~出力~(全体像) try { FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

どのファイルに書き込むか、ファイルの名前を決める 書式~出力~(詳細2) try { String str; FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); try { String str; FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); どのファイルに書き込むか、ファイルの名前を決める 「出力するファイル名」は、単なる文字列でも、変数に代入された文字列でも良い 出力するファイルは、Javaプログラムと同じ場所に作成される Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~出力~(詳細4) try { String str; FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); try { String str; FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); 「書き込むために」ファイルを開く作業(「fw」の部分はFileWriterの変数名、「bw」の部分はBufferedWriterの変数名を入れること) Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~出力~(詳細5) try { String str; FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); try { String str; FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); 開いたファイルに内容を書き込んでいく(「pw」の部分は、PrintWriterの変数名を入れること) 「pw.println(...)」では、書き込んだ後に改行が入る 「pw.print(...)」では、書き込んだ後に改行が入らない →目的に応じて使い分けること Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

書式~出力~(詳細6) try { String str; FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); try { String str; FileWriter fw = new FileWriter(出力するファイルの名前); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); pw.println(書き込む内容); pw.close(); bw.close(): fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); ファイル書き込みが終わった後、ファイルを閉じる作業 (プログラムでは、開いたファイルは必ず閉じる作業をしなければならない) (「pw」・「bw」・「fw」の部分は、それぞれPrintWriter・BufferedWriter・FileWriterの変数名を入れること) Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

ファイル出力の例 プログラム: 実行結果 「Sample.txt」の中身: 情報処理技法 サンプルファイル try { String str; FileWriter fw = new FileWriter("Sample.txt"); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(fw); pw.println("情報処理技法"); pw.print("サンプルファイル"); pw.close(); bw.close(); fw.close(); } catch (IOException e) { System.out.println("指定されたファイルに出力ができません。"); 情報処理技法 サンプルファイル 実行結果 「Sample.txt」の中身: Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッドの作り方・使い方 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッド プログラム中で行われる処理の手順をまとめたもの メソッド名、引数、戻り値(返り値)という構成 複数の処理をまとめて、1つの名前を付けたもの メソッド名、引数、戻り値(返り値)という構成 メソッド名: メソッドの名前 引数: メソッドに渡す情報(計算等の処理の材料にするデータ) 処理の材料にするデータのみ、引数として定義 戻り値(返り値): メソッドの内容を実行したときの処理結果 多くの場合、戻り値を変数に代入して利用する 「変数名 = メソッド」で、変数に戻り値が代入される Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッドのイメージ メソッドに対して与えるデータ 引数 引数 引数 メソッド ごにょごにょ... メソッドの処理結果 戻り値 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッドを作る(1) 定義するのは の部分 public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 定義するのは の部分 ごにょごにょ... メソッドを作るときのお約束 ただし、いつも必ず「public static」であるとは限らない この授業では違う書き方をする場合も public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 return 処理結果; } Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッドを作る(2) 定義するのは の部分 public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 定義するのは の部分 ごにょごにょ... 戻り値は1つだけ public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 return 処理結果; } Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッドの名前(名前の付け方は、クラス名や変数名と同じ) メソッドを作る(3) メソッドの名前(名前の付け方は、クラス名や変数名と同じ) public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 return 処理結果; } Javaの命名規則としては... 先頭の単語は動詞にする 複数の単語を連結するときは、先頭の単語はすべて小文字、2つ目以降の単語は 先頭の文字のみ大文字、あとは小文字 変数と同じ Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッドを作る(4) public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 return 処理結果; 「引数のデータ型 引数の変数名」と書く 引数はいくつあっても良い(「,」で区切る) データ型はそれぞれ異なってもかまわない public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 return 処理結果; } Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

処理内容は何を書いても良い (if, for, while, ...) メソッドを作る(5) 処理内容は何を書いても良い (if, for, while, ...) public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 return 処理結果; } ※「処理内容」の部分では、「引数」で定義した変数を 通常の変数として利用できる public int sum(int num1, int num2) { int result; result = num1 + num2; return result; } Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッドを作る(6) public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 return 処理結果; 「処理結果」を返すという意味(「変数名 = メソッド名(引数)」と書くと、 「変数名」の中に処理結果が代入される) この文でメソッドの内容が終わる(この後には文を書かないこと) 処理結果のデータ型と戻り値のデータ型は同じもの public static 戻り値のデータ型 メソッド名(引数) { メソッドでの処理内容 return 処理結果; } Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

return文 戻り値のデータ型とreturn文で返すデータ型は同じでなくてはならない public int sum(int num1, int num2) { int result; result = num1 + num2; return result; } データ型が同じ public String sum(int num1, int num2) { int result; result = num1 + num2; return result; } 違うデータ型 Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

「return」で、「結果を返す」という意味 (「return」の後に書く処理結果のデータ型は、戻り値のデータ型と同じにすること) メソッドの作成例 処理結果を「double」型で返す 引数の定義 引数に与えられた3つの数の平均を求めるメソッド public static double average( int num1, int num2, int num3 ) { double result; result = (double) (num1 + num2 + num3) / 3; return result; } 処理内容 「return」で、「結果を返す」という意味 (「return」の後に書く処理結果のデータ型は、戻り値のデータ型と同じにすること) Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

mainの上か下に作る(どちらに作っても良い) メソッドを作る場所 mainの上か下に作る(どちらに作っても良い) public class ファイル名 { public static void main(String[] args) { } Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

メソッドの作成例 public class Sample { public static double average(int num1, int num2, int num3) { double result; result = (double) (num1 + num2 + num3) / 3; return result; } public static void main(String[] args) { } Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

作ったメソッドを使う メソッドを使う部分は、「public static void main」の中に書く 「メソッド名(引数の値)」でメソッドを呼び出す Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

作ったメソッドを使う(例)(1) メソッドの定義 public class Average { public static double average (int num1, int num2, int num3) { int sum; double result; sum = num1 + num2 + num3; result = (double) sum / 3; return result; } public static void main(String[] args) { result = average(10, 20, 30); Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

(引数の順番は、メソッドを作ったときの順番と同じに) 作ったメソッドを使う(例)(2) public class Average { public static double average (int num1, int num2, int num3) { int sum; double result; sum = num1 + num2 + num3; result = (double) sum / 3; return result; } public static void main(String[] args) { result = average( 10, 20, 30 ); 引数には具体的な値または変数を書く (引数の順番は、メソッドを作ったときの順番と同じに) averageというメソッドを呼び出す Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

作ったメソッドを使う(例)(3) public class Average { public static void main(String[] args) { double result; result = average(10, 20, 30); } public static double average (int num1, int num2, int num3) { int sum; sum = num1 + num2 + num3; result = (double) sum / 3; return result; 処理の流れ mainメソッドで、averageメソッドの引数に10, 20, 30を指定する 指定された10, 20, 30というデータがaverageメソッドの引数の変数「num1」、「num2」、 「num3」にそれぞれ代入される averageメソッド内で引数の値を使って計算され、変数resultに結果が代入される averageメソッドの変数resultの値がmainメソッドの変数resultに代入される Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

やってみよう!(1) 24時間表記の時間を入力し、それを12時間表記の時間として出力するプログラム 24時間表記の時間は標準入力で入力すること 24時間表記の時間を引数とし、12時間表記の時間を戻り値とするメソッドを 作ること Ex. 入力: 5 →出力: 5 am. 入力: 23 →出力: 11 pm. ※必要と思われる例外処理をしておくこと Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.

やってみよう!(2) これまでに作成したJavaファイルを読み込み、ファイルの行数を数える プログラム ファイルの行数は、標準出力で出力すること 0~1000までの乱数を100個作成し、その乱数をファイルに書き込む プログラム 例えば、「random」というint型の変数がある場合、 random = (int) (Math.random() * 1000); で、変数「random」に乱数が1つ入る 乱数は、「,」やスペースで区切ってファイルに書き込む ※必要と思われる例外処理をしておくこと Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2016, All rights reserved.