2019 年 10 月 3 日 ( 木 ) 実施浮動小数点数 Java 言語で実数を扱う場合, 実用的な計算には変数のデータ型としては,double 型を用いる 浮動小数点数とは, 実数を表す方式の一つで,2 進数の場合は例えば 1.101 2 3 ( 判り易さの為にここでは 2 や 3 は 10 進数で表記 ) の様な表記法である なお, 第 1 回の教材にあった, 単精度, 倍精度という用語で, 精度とはどれだけ多くの桁数を取り扱えるかということの尺度である 例題 1 ( 標準出力装置への計算結果の表示 ) 次のプログラムは, 標準出力装置に計算結果を表示させるものである これを入力して, 実行 せよ ここで, クラス名は Sample2_1, ソースファイル名は Sample2_1.java とする public class Sample2_1 { double wa, sa, seki, shou1, shou2, amari; int a=4, b=10; wa=a+b; sa=a-b; seki=a*b; shou1=a/b; shou2=(double)a/b; amari=a%b; System.out.println("a と b との和は " + wa); System.out.println("a と b との差は " + sa); System.out.println("a と b との積は " + seki); System.out.println("a と b との商 1 は " + shou1); System.out.println("a と b との商 2 は " + shou2); System.out.println("a を b で割った余りは " + amari); 解説 1.Java 言語では int 型のデータを double 型の変数に代入することが可能であるが, その場合は小数点以下には 0 が埋められる これは精度の低いデータを精度の高い変数に代入する場合にのみ許され, 逆の場合 (double 型のデータを int 型の変数に代入すること ) は出来ない 2. 実数を実数で割った場合には結果は実数となるが, 実数を整数で割った場合や整数を実数で割った場合等, 精度の異なるデータ間の演算は, 精度の高い方に合わせた結果を得る 3. int 型の変数同士の演算では結果は整数しか得られないが, 型キャストと呼ばれる機能を利用して,int 型の変数を参照して得られるデータを一時的にdouble 型のデータに変換することで, 実数化したデータによる演算が可能となる 型キャストは,( データ型 ) の様に, 半角文字の括弧 ( ) で double 等のデータ型の名前を挟んで用いる - 1 -
担 当 神保 雅人 Sample2_1_main.txt の利用法 今回から 例題のプログラムに関しては main メソッドの中身をテキストファイルとして教材 集の Web ページに置いている その利用法について解説する 第1回の教材の p.8 と同様にして [ファイル] [新規] [クラス]の順で選択し クラス 名を Sample2_1 とする クラスのブロック及びその中の main メソッドのブロックが生成されるので その中 下の図 では 6 行目 にカーソルを置き ここに Sample2_1_main.txt の中身をコピーして貼り付ける Prog1 のフォルダを開き Sample2_1_main.txt をダブルクリックすると テキストエディタ の EmEditor が起動する 2
EmEditor 側で,[ 編集 ] [ すべて選択 ] を選択した上で, コピー ボタンをクリックする Eclipse 側で,[ 編集 ] [ 貼り付け ] を選択する ( 保存を忘れない様に ) 文字型変数とStringクラス文字型変数 Java 言語では,1 文字を格納するには,char 型の変数を用いる その値はUnicode で表される文字コードの数値で,16 ビットの符号無し整数である - 3 -
例 ) char c; // 文字 (character) のデータ型の変数 c を宣言 char c1 = 'A'; // 文字 A の代入 ( 一重引用符で挟む ) char n1 = ' 神 '; // 文字神の代入 (Java 言語では全角文字も 1 文字 ) Stringクラス Java 言語では, 文字列を扱う String クラスがパッケージ java.lang の中に用意されている Stringクラスは, 作成後に変更できない文字列を表す 例 ) String str = "CUC"; 右辺の "CUC" の様に, 文字列を半角の二重引用符で挟んだものは文字列リテラルと呼ばれ, String クラスのインスタンス (" 実体 ") への参照として扱われるが, このインスタンスに関しては後述する 例題 2 ( 標準出力装置への文字及び文字列の表示 ) 次のプログラムは, 標準出力装置に文字及び文字列を表示させるものである これを入力して, 実行せよ ここで, クラス名は Sample2_2, ソースファイル名は Sample2_2.java とする public class Sample2_2 { char n1 = ' 神 ', n2 = ' 保 '; String str1 = "Service"; String str2 = " Innovation"; System.out.println("n1 に格納されている文字は : " + n1); System.out.println("n2 に格納されている文字は : " + n2); System.out.println(" 両者をつなげて表示すると : " + n1 + n2); System.out.println("str1 に格納されている文字列は : " + str1); System.out.println("str2 に格納されている文字列は : " + str2); System.out.println(" 両者をつなげて表示すると : " + str1 + str2); キーボードからの入力これまでのプログラムは固定的なデータを扱うものであったが, 実用的なプログラムでは, 実行するたびに異なるデータを扱えるものでなければならない Java 言語では, 標準入力装置のキーボードからデータを入力する方法は複数あるが, ここではパッケージ java.util の中に用意されている Scanner クラスを利用することにする その使い方の例を次に挙げる - 4 -
例 ) Scanner sc = new Scanner(System.in); // Scannerクラスのインスタンス scを作成 int a = sc.nextint(); // sc に働き掛けを行い, キーボードから整数を読み込む クラスの定義では枠組みを用意しているが, それを利用するに当たっては new 演算子を用いてインスタンスを作成する System.inは標準入力装置から入力されるデータの並び ( ストリーム ) を表す nextint は整数を読み込む際に用いるメソッドであるが, 他にも読み込むデータの型に応じたメソッドが用意されている 例題 3 ( 標準入力装置からの整数データの入力 ) 次のプログラムは, 標準入力装置から整数データを入力して, 標準出力装置に計算結果を表示させるものである これを入力して, 実行せよ ここで, クラス名は Sample2_3, ソースファイル名は Sample2_3.javaとする import java.util.scanner; public class Sample2_3 { double heikin; Scanner sc = new Scanner(System.in); System.out.println("a の値を入力して下さい "); int a = sc.nextint(); System.out.println("b の値を入力して下さい "); int b = sc.nextint(); System.out.println("c の値を入力して下さい "); int c = sc.nextint(); heikin=(double)(a+b+c)/3; System.out.println("a,b,c の平均値は " + heikin); * Eclipse で mainメソッドの内容を入力し終わって保存をしても, 次ページの図の様な警告が残っていたら,[ ソース ] [ インポートの編成 ] を選択して適用する その結果として, ソースプログラムの先頭に import java.util.scanner; の1 行が追加される これは Scannerクラスを利用する為に必要となる ( 設定によっては自動的に付加される場合もある ) - 5 -
警告の印 図は入力途中 演習次のプログラムは, 標準入力装置から文字列データを入力して, 標準出力装置にメッセージを表示させるものである このプログラムリストの空欄を埋めて完成させたプログラムを入力し, 実行せよ ここで, クラス名は Ex2, ソースプログラム名は Ex2.java とする import java.util.scanner; public class Ex2 { Scanner sc = 1) Scanner(System.in); System.out.println(" 氏名を入力して下さい "); 2) str = sc.next(); System.out.println(" 初めまして," + str + " さん "); - 6 -
解説 next は文字列を読み込む際に用いるメソッドである なお, 文字列中に空白文字やタ ブ文字があると, そこで区切りとみなし, その前までを読み込む 提出物 : 1) 例題 1, 例題 2, 例題 3 及び演習のプログラムのコンソールへの出力結果をコピーしてメール 本文に貼り付ける 2) 演習の完成版ソースプログラムのファイル Ex2.java をメールに添付する 3) 第 1 回の授業の復習の内容を埋めたファイル Review_1st.txt をメールに添付する * メールの件名は プログラミング 1 第 2 回課題 ( 鍵括弧は要らない ) とし, メールの本文 の書き方は情報入門に準拠する - 7 -