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

Similar documents
GEC-Java

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

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

K227 Java 2

Prog1_11th

Prog2_10th

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

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

Prog2_9th

PowerPoint プレゼンテーション

JavaプログラミングⅠ

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

Microsoft PowerPoint - prog09.ppt

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

Microsoft PowerPoint - prog09.ppt

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

Prog1_15th

JavaプログラミングⅠ

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

プログラミングA

JavaプログラミングⅠ

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

Programming-C-9.key

Prog1_10th

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


GEC-Java

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

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

2

プログラムの基本構成

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

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

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog13.ppt

2

Prog1_6th

JavaプログラミングⅠ

2

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

Java講座

Prog1_13th

r1.dvi

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

JavaプログラミングⅠ

プログラミング入門1

プログラミング入門1

JavaプログラミングⅠ

デジタル表現論・第6回

2

プログラミング入門1

Microsoft PowerPoint - OOP.pptx

PowerPoint Presentation

Microsoft Word - java a.doc

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

メソッドのまとめ

Microsoft PowerPoint - prog03.ppt

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

マークアップ言語

PowerPoint Presentation

スライド 1

マークアップ言語

新・明解Java入門

プログラミング入門1

1 Java Java GUI , 2 2 jlabel1 jlabel2 jlabel3 jtextfield1 jtextfield2 jtextfield3 jbutton1 jtextfield1 jtextfield2 jtextfield3

JavaプログラミングⅠ

File IO

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

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

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

PowerPoint プレゼンテーション

JavaプログラミングⅠ

Prog1_2nd

PowerPoint プレゼンテーション

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

Prog1_3rd

Microsoft PowerPoint ppt

Java知識テスト問題

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


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

Javaの作成の前に

Assignment_.java 課題 : 転置行列 / class Assignment_ public static void main(string[] args) int i,j; int[][] array = 1,,,,,,,,,,,,,1,1,; 行 列行列 i

public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

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

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

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

JavaプログラミングⅠ

JAVA 11.4 PrintWriter 11.5

PowerPoint Presentation

I java A

JAVA入門

text_10.dvi

デジタル表現論・第4回

試験問題に記載されている会社名又は製品名は, それぞれ各社の商標又は登録商標です なお, 試験問題では, 及び TM を明記していません

Microsoft Word - CompA-Ex doc

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

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

そして 取得した OutputStream インスタンスを使い 文字コードは UTF-8 として PrintWriter インスタンスを生成して あとは PrintWriter.append() で書き込みたい文字 列を渡して close() で保存する というだけです ファイルの読込み方法 それで

InputStreamReader は, 入力ストリーム ( 端末 ) からのバイト入力を文字に変換する クラス BufferedReader は, 文字入力ストリームからの入力をバッファリングし, メソッド readline による行単位での入力処理を可能とする 設問プログラム中のに入れる正しい答

Transcription:

オブジェクト指向プログラミング 同演習 5 月 21 日演習課題 問題 1 配列の例外処理例外が発生する可能性のある処理を try で囲み その後に catch で例外を捕捉します 例外処理の終了処理として finally が行われます これは書かなくて自動的に行われます 提出課題 1 (Kadai052301.java) 以下のプログラムは例外処理をしていない ArrayIndexOutOfBoundsException の例外を捕捉し 更に 数以外のものが入力された場合の例外 ( NumberFormatException ) の処理を付け加えよ /* Kadai052101.java 整数値を入力して 合計値を出力する import java.lang.arrayindexoutofboundsexception; public class Kadai052301{ public static void main(string[] args) throws IOException { int[] array = new int[5]; BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int ind = 0; int num = 0; while(true){ System.out.print(" 整数値を入力して下さい >>"); num = Integer.parseInt(buf.readLine()); array[ind] = num; ind++; $java Kadai052301 整数値を入力して下さい >>1 整数値を入力して下さい >>2 整数値を入力して下さい >>3 整数値を入力して下さい >>4 整数値を入力して下さい >>5 整数値を入力して下さい >>6 データ数が配列サイズを超えました合計値は 15 です 問題 2 入出力 Java には 外部からデータを受け取り処理をするためのパッケージが用意されています クラスを集めてたクラス群は パッケージと呼ばれます Java 言語は 似たようなクラスをパッケージごとに整理してまとめ クラスライブラリとして提供しています 入出力を行うクラスは 文字データと一般的なバイトデータに分かれます ここでは Write クラスと Reader クラスのサブクラスを扱います

入出力クラス 扱うデータ出力 入力 文字 Writer Reader バイト OutputStream InputStream 提出課題 2 (Kadai052302.java) 以下のサンプルプログラムは 標準入力から入力された 1 行のみをファイル名 outdata.txt に出力するプログラムである 標準入力で出力するファイル名を指定し zzzz が入力されるまで複数行の標準入力をよみこみファイルに出力できるように書き換えよ 但し ファイルに zzzz は出力しない /* Kadai052302.java 標準入力からデータを入力し 指定したファイル名にデータを出力する import java.io.printwriter; public class Kadai052302 { try { String fname = "outdata.txt"; PrintWriter pw = new PrintWriter(fname); String str; str = buf.readline(); pw.println(str); pw.close(); catch(ioexception e){ e.printstacktrace(); $java Kadai052302 書き込むファイル名を指定してください >>text.txt my name zzzz $more text.txt my name 問題 3 ファイルからデータを読み込み 標準出力するプログラム提出課題 3 (Kadai052303.java) ファイルからデータを読み込む場合は ファイルが存在しない場合 FileNotFoundException の例外が発生するため この例外を捕捉するための例外処理が必要になる 以下のプログラムは ファイル名 outdata.txt 指定し最初の 1 行を読み込んで終了する しかし 例外処理が入っていないのでコンパイル出来ない そこで FileNotFoundException IOException が捕捉出来るように例外処理を書き加えよ

/* Kadai052303.java ファイルからデータを取得し 指定したファイル名にデータを出力する import java.io.filereader; import java.io.filenotfoundexception; public class Kadai052303 { FileReader fr = new FileReader("outdata.txt"); BufferedReader br = new BufferedReader(fr); String str; str = br.readline(); System.out.println(str); br.close(); 問題 4 追加課題 (OKadai052301.java) 以下のプログラムは 2 つ数の計算をする電卓プログラムである以下の仕様になるように Calc.java に例外処理付け加えてプログラムを完成させよ プログラムは以下のものとする メインのクラス (Okadai052301.java) は 計算する式の入力を受けつけるメインプログラムは変更しない Calc クラス (Calc.java) は入力された文字列を処理し 演算を行い演算時の例外処理をする 演算子チェック部分で 演算子が入っていない場合に独自例外の OpException を発生する ゼロで割り算した場合は ArithmeticException の例外を生成し 捕捉できるようにする 入力が数でない場合は NumberFormatException 例外を捕捉する OpException クラス (OpException.java) は独自の例外クラスを定義する OpException クラスは変更しない /* ----------------------------------------------------- メインのクラス OKadai052301.java 四則演算を行うクラスを作成して 例外処理を行う演算クラスで 数を 2 つと演算子を 1 つ入力して演算子合わせた数の演算を行う ----------------------------------------------------- public class OKadai052301 { Calc calc = new Calc(); try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println(" ");

System.out.println( calc.arithmetic( br.readline() ) ); catch(ioexception e){ e.printstacktrace(); /* Calc.java ゼロ割した場合の処理を付け加える入力した式が不正な場合の独自例外を定義する d1, d2 : 入力された行を演算子の左右に分解したときの二つの数を代入する result : 計算結果を代入する変数 arithmetic(): 演算子をチェックして 二つの数と演算子に分解する public class Calc{ private String[] str; private d1,d2, result; Calc(){ d1=0.0; d2 =0.0; result=0.0; public double arithmetic(string input) { // 演算子のチェック char op_char = ' '; if ( input.indexof('*')!= -1) { op_char = '*'; else if ( input.indexof('/')!= -1) { op_char = '/'; else if( input.indexof('+')!= -1) { op_char = '+'; else if( input.indexof('-')!= -1) { op_char = '-'; else if(input.indexof('%')!=-1) { op_char = '%'; // 入力の演算子の前までの切り抜き str[0] = input.substring( 0, input.indexof(op_char)); // 入力の演算子の後ろから最後まで切り抜き str[1] = input.substring( input.indexof(op_char)+1, input.length() ); // 演算子の前と後ろの文字列を数値に置き換えて演算する d1 = Double.parseDouble(str[0]); d2 = Double.parseDouble(str[1]); switch(op_char) { case '*': result = d1*d2; case '/': result = d1/d2; case '+': result = d1+d2; case '-':

result = d1-d2; return result; /* OpException.java 独自の例外クラス演算子が入っていない場合に用いる class OpException extends Exception { String message; OpException(String message){ this.message = message; public void printmessage(){ System.out.println(message); 5*2 10.0 *0 正しく式を入力してください 0.0 10 演算子も入れてください 0.0 追加課題 (OKadai052302.java) Kadai052303.java を改良し ファイル名を指定してテキストファイルを最後まで自動的に読み込めるようにせよ ファイルの終端を調べるには br.readline()!= null とすると ファイルの終端かどうか判定できる