JAVA入門② 変数と型 式と演算子 制御文 簡単JAVA説明⑦ ★変数と型 1.変数とは? ・中高(数学等)では 変数=x?つまり 変数="任意の値をとり得る文字" ・プログラミング(JAVA)では 変数=値を入れておく入れ物 簡単JAVA説明⑦ 2.識別子 変数の名前として使える文字・数字を 「識別子」 と呼ぶ。 簡単JAVA説明⑦ 3.識別子(変数)の制限 ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1 ②長さはいくらでもよい。 ③予約語は使えない。 ④数字からははじめない。 1Num、100%Num は不可。 ⑤大文字と小文字は区別される。 簡単JAVA説明⑦ ★型 ①.変数には値を記憶させる。 ②.値には「種類」がある。 ③.「種類」のことを「型」という。 ④. 変数は必ず型を指定する必要がある。 簡単JAVA説明⑦ 1.型のいろいろ a.boolean ・・・true(真) false(偽) b. char ・・・ 2バイト文字(\u0000~\uffff) c. byte ・・・1バイト整数 (-128~127) d. short・・・2バイト整数 (-32768~ 32767=2^15-1) e. int ・・・4バイト整数 (-2147483648~ 2147483647=2^311) 簡単JAVA説明⑦ f. long ・・・8バイト整数 (ー9223372036854775808~ 9223372036854775807=2^63-1) g. float・・・4バイト単精度浮動小数点数 (-128~127) h. double・・・8バイト単精度浮動小数点数 (-128~127) 簡単JAVA説明⑦ ★変数の宣言 1.変数の宣言 「変数に名前をつける。」 「変数は必ず型を指定する必要がある。」 この2つをコード中で行うことを 「変数を宣言する」 Num という。 ※イメージとしては 「入れ物を用意し名前を付けておく」 Num という感じです。 簡単JAVA説明⑦ 具体的には 「型名 識別子(変数);」 例 int Num ; char Car ; 簡単JAVA説明⑦ 2.応用 問:なぜ変数を宣言するときに型をしていするのか? 実は、変数を宣言するときその型に応じたメモリ領 域が確保されます。(P51図) ・「変数を宣言する」とは変数分の領域を確保するこ とに他ならない。 次のことも明らか。 ・型に応じて確保されるサイズは異なる。 プログラムを組む上で ・不要な変数は宣言しない 簡単JAVA説明⑦ ★変数の利用 1.変数に値を代入 変数を宣言した後、特定の値を記憶させます。 Num = 5; ※上記の = は「代入」の意味です。 5 右辺を左辺に「代入」という意味になります。 ※イメージとしては、 「用意した入れ物にモノを入れる。」 Num という感じです。図3-5(P52) 簡単JAVA説明⑦ ・具体例 class Sample1 { public static void main(String[] args) { // 整数型の変数numの宣言 int num; // 変数numに3を代入 num = 3; // 変数numの値を表示 System.out.println("変数numの値は" + num + " です。"); } } 簡単JAVA説明⑦ ・実行結果 変数numの値は3です。 簡単JAVA説明⑦ 注意 なぜ出力結果は 「変数numの値はnumです。」 ではないのでしょう? 実は、出力文内で変数を直接書くと 「変数の値」 が表示されます。 簡単JAVA説明⑦ 2.変数の初期化 int num; num = 3; を一文で int num = 3; と書けます。 このように書くのは文頭であり、 「初期化する。」と言います。 簡単JAVA説明⑦ 3.変数の値の変更 次のことを理解していただければよいです。 「変数は上書き変更が可能」 => Sample2 ★変数同士の代入 変数同士でも「= は代入の意味」を適用。 => Sample3 簡単JAVA説明⑦ class Sample2 { public static void main(String[] args) { int num; num = 3; System.out.println("変数numの値は" + num + "です。"); // 【変数numの値を5に変更】 num = 5; System.out.println("変数numの値を変更しました。"); System.out.println("変数numの新しい値は" + num + "です。 "); } } 簡単JAVA説明⑦ class Sample3 { public static void main(String[] args) { int num1, num2; num1 = 3; System.out.println("変数num1の値は" + num1 + "です。 "); // 【変数num2に変数num1の値を代入】 num2 = num1; System.out.println("変数num1の値を変数num2に代入しま した。"); System.out.println("変数num2の値は" + num2 + "です。 "); } } 簡単JAVA説明⑦ ★キーボードからの入力 次のSample4ではキーボードから文字を入力し 表示、 Sample5ではキーボードから数値を入力し 表示するサンプルを示します。 System.out.println(“”); 以外は今回は無視して一種のおまじない と思ってください。 簡単JAVA説明⑦ import java.io.*; class Sample4 { public static void main(String[] args) throws IOException { // プロンプトメッセージを表示 System.out.println("文字列を入力してください。"); // キーボード入力ストリームを作成 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // キーボード入力ストリームから1行分の文字列を入力 String str = br.readLine(); // 文字列strの内容を表示 System.out.println(str + "が入力されました。"); } } import java.io.*; class Sample05 { public static void main(String[] args) throws IOException { // プロンプトメッセージを表示 System.out.println("整数を入力してください。"); // キーボード入力ストリームを作成 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // キーボードから文字列を入力し、strに格納 String str = br.readLine(); // 【文字列strを整数numに変換】 int num = Integer.parseInt(str); // 整数numの値を表示 System.out.println(num + "が入力されました。"); } } 簡単JAVA説明⑦ まとめ 変数 識別子 型と名前 予約語 変数 = ●;(=は代入) 変数は上書き可能 キーボードからの入力 簡単JAVA説明⑧ ★式と演算子 1.式のしくみ ・式とは?=>数式 x+y、5+3 ・プログラミング(JAVA)における式は 「オペランド+演算子」 x+yでいうx、yがオペランド、+が演算子 =>Sample1 簡単JAVA説明⑧ class Sample1 { public static void main(String[] args) { // 1+2の計算結果を表示 System.out.println("1+2は" + (1 + 2) + "です。"); // 3*4の計算結果を表示 System.out.println("3*4は" + (3 * 4) + "です。"); } } 簡単JAVA説明⑧ 出力結果 1+2は3です。 3*4は12です。 簡単JAVA説明⑧ 2.式の値の出力 (1+2)、(3*4)はその 「評価値(計算値)」 を返します。 これは変数を用いた場合も成り立ちます。 =>Sample2 簡単JAVA説明⑧ class Sample02 { public static void main(String[] args) { int num1 = 2; int num2 = 3; int sum = num1 + num2; System.out.println("変数num1の値は" + num1 + "です。"); System.out.println("変数num2の値は" + num2 + "です。"); System.out.println("num1+num2の値は" + sum + "です。"); num1 = num1 + 1; System.out.println("変数num1の値に1をたすと" + num1 + "です。"); } } 簡単JAVA説明⑧ 出力結果 変数num1の値は2です。 変数num2の値は3です。 変数num3の値は5です。 変数num1の値に1をたすと3です。 簡単JAVA説明⑧ 3.応用 キーボードから適当な数値を入力してそのたし算の 結果を表示する。 =>Sample3 import java.io.* class Sample03 { public static void main(String[] args) throws IOException { System.out.println("整数を2つ入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String str2 = br.readLine(); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); // num1 + num2を計算し、計算結果を表示 System.out.println("たし算の結果は" + (num1 + num2) + "です。"); } } 簡単JAVA説明⑧ 実行結果 整数を2つ入力してください。 5 6 たし算の結果は11です。 簡単JAVA説明⑧ ★式と演算子 1.式のしくみ ・式とは?=>数式 x+y、5+3 ・プログラミング(JAVA)における式は 「オペランド+演算子」 x+yでいうx、yがオペランド、+が演算子 =>Sample1 簡単JAVA説明⑧ class Sample1 { public static void main(String[] args) { // 1+2の計算結果を表示 System.out.println("1+2は" + (1 + 2) + "です。"); // 3*4の計算結果を表示 System.out.println("3*4は" + (3 * 4) + "です。"); } } 簡単JAVA説明⑧ 出力結果 1+2は3です。 3*4は12です。 簡単JAVA説明⑧ 2.式の値の出力 (1+2)、(3*4)はその 「評価値(計算値)」 を返します。 これは変数を用いた場合も成り立ちます。 =>Sample2 簡単JAVA説明⑧ class Sample02 { public static void main(String[] args) { int num1 = 2; int num2 = 3; int sum = num1 + num2; System.out.println("変数num1の値は" + num1 + "です。"); System.out.println("変数num2の値は" + num2 + "です。"); System.out.println("num1+num2の値は" + sum + "です。"); num1 = num1 + 1; System.out.println("変数num1の値に1をたすと" + num1 + "です。"); } } 簡単JAVA説明⑧ 出力結果 変数num1の値は2です。 変数num2の値は3です。 変数num3の値は5です。 変数num1の値に1をたすと3です。 簡単JAVA説明⑧ 3.応用 キーボードから適当な数値を入力してそのたし算の 結果を表示する。 =>Sample3 import java.io.* class Sample03 { public static void main(String[] args) throws IOException { System.out.println("整数を2つ入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String str2 = br.readLine(); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); // num1 + num2を計算し、計算結果を表示 System.out.println("たし算の結果は" + (num1 + num2) + "です。"); } } 簡単JAVA説明⑧ 実行結果 整数を2つ入力してください。 5 6 たし算の結果は11です。 簡単JAVA説明⑧ ★式と演算子 いろいろな演算子 1.四則演算子 +ー×÷(→÷ではなく/を使う) =>Sample04 2.文字連結演算子 ●System.out.println();中で用いている例。 Sample03の下記の+記号 System.out.println(“たし算の結果は” + (num1 + num2) + “で す。”); 簡単JAVA説明⑧ 3.インクリメント、デクリメント演算子 ++:インクリメント ーー:デクリメント 例 a++; 、a--; a++; はa=a+1;と同じ意味 a‐‐; はa=aー1;と同じ意味 簡単JAVA説明⑧ ●インクリメントの前置きと後ろ置き ①b=a++; と ②b=++a; の違い ①はb=a; 、a=a+1; の意味 ②はa=a+1;、 b=a; の意味 簡単JAVA説明⑧ 4.代入演算子 簡単JAVA説明⑦の変数の利用でも書きましたが 「=」 は「代入」の意味です。 ●= は ●を行った後、代入という意味となります。 a ●= b; は、a = a ● b; と同じ意味です。 以下一覧です。 += : 加算代入 -= : 減算代入 *= : 乗算代入 簡単JAVA説明⑧ /= : 除算代入 %= : 剰余代入 &= : 論理積代入 |= : 論理和代入 ^= : 排他論理和代入 <<= : 左シフト代入 >>= : 右シフト代入 >>>= : 符号なし右シフト代入 Sample6は += の使用例です。 class Sample06 { public static void main(String[] args) throws IOException { System.out.println("整数を3つ入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String str2 = br.readLine(); String str3 = br.readLine(); int sum = 0; sum += Integer.parseInt(str1); sum += Integer.parseInt(str2); sum += Integer.parseInt(str3); System.out.println("3つの数の合計は" + sum + "です。"); } } 簡単JAVA説明⑧ 5.シフト演算子 ・右シフト 0000000000000101 = 5 5 << 2 は以下の意味:左へ2つずらし、00を埋める 0000000000010100 = 20 ・左シフト 0000000000000101 = 5 5 >> 2 は以下の意味:右へ2つずらし、00を埋める 0000000000000001 = 1 簡単JAVA説明⑧ 6.演算子の優先順位 ():引数、[]:配列は最優先、次は++、-- で 計算 系(四則)、比較系、論理系 のように目安を覚えておいて使う時には一 覧を 参照すればよいと思われます。 簡単JAVA説明⑧ ・()使用時の注意 ()の省略 1.a+b+c は (a+b)+c の意味 2.a=b=c は a=(b=c) の意味 3.結合演算子の場合 System.out.println(" 1+2は" + 1+2+ " です。"); System.out.println(" 3*4は" + 3*4+ " です。"); の場合どうなるでしょう? 簡単JAVA説明⑧ たし算の+と結合の+では、結合の+が優先されます。 上の例では計算の+の意味はなくなり、+は結合の意 味に理解され、表示結果は 1+2は12です。となります。 これに対し*はそのまま計算の意味で 3*4は12です。と表示されます。 ★:計算部分には()をつけるというのを心がけるとよ いです。 簡単JAVA説明⑧ 7.型変換 小サイズ(int) => Sample8 => 大サイズ(double) => Sample9 => → 大サイズ(double) 何もせずに入力可 → 小サイズ(int) キャストが必要 簡単JAVA説明⑧ class Sample8 { public static void main(String[] args) { // 整数型の変数inumを宣言し、160で初期化 int inum = 160; // 整数inumの値を表示 System.out.println("身長は" + inum + "センチです。"); System.out.println("double型の変数に代入します。"); // 小数型の変数dnumを宣言し、整数inumの値で初期化 double dnum = inum; // 小数dnumの値を表示 System.out.println("身長は" + dnum + "センチです。"); } } 簡単JAVA説明⑧ class Sample9 { public static void main(String[] args) { // 小数型の変数dnumを宣言し、160.5で初期化 double dnum = 160.5; // 小数dnumの値を表示 System.out.println("身長は" + dnum + "センチです。"); System.out.println("int型の変数に代入します。"); // 整数型の変数inumを宣言し、小数dnumの値で初期化 int inum = (int) dnum; // 整数inumの値を表示 System.out.println("身長は" + inum + "センチです。"); } } 簡単JAVA説明⑧ 実行結果 Sample8 身長は160センチです。 double型の変数に代入します。 身長は160.0センチです。 Sample9 身長は160.0センチです。 int型の変数に代入します。 身長は160センチです。 簡単JAVA説明⑧ ・キャスト演算子 形式: (型名) 式 例 double a=1.0; int b = (int)a; ◎小サイズ→大サイズにも適用可能 例 int c=1; double d = (double)c; 簡単JAVA説明⑧ 8.異なる型どうしの演算 異なる型どうしの演算は、一方のオペランド を大きなサイズの型に変換してから演算が 行なわれる。 => Sample10 9.同じ型どうしの演算 同じ型どうしの演算結果はまたその型に なります。これが意外な結果になることもあります。 => Sample11、 Sample12 簡単JAVA説明⑧ class Sample10 { public static void main(String[] args) { // 整数dを宣言し、2で初期化 int d = 2; // 小数piを宣言し、3.14で初期化 double pi = 3.14; // 整数dの値を表示 System.out.println("直径が" + d + "センチの円の"); // d * piを計算し、その結果を表示 System.out.println("円周は" + (d * pi) + "センチです。"); } } 簡単JAVA説明⑧ class Sample11 { public static void main(String[] args) { // 整数型の変数num1を宣言し、5で初期化 int num1 = 5; // 整数型の変数num2を宣言し、4で初期化 int num2 = 4; // 小数型の変数divを宣言し、num1 / num2 の計算結果 を代入 double div = num1 / num2; // 変数divの値を表示 System.out.println("5/4は" + div + "です。"); } } 簡単JAVA説明⑧ class Sample12 { public static void main(String[] args) { // 整数型の変数num1を宣言し、5で初期化 int num1 = 5; // 整数型の変数num2を宣言し、4で初期化 int num2 = 4; // 小数型の変数divを宣言し、num1 / num2 の計算結果 を代入 double div = (double) num1 / (double) num2; // 変数divの値を表示 System.out.println("5/4は" + div + "です。"); } } 簡単JAVA説明⑧ 実行結果 Sample10 直径が2センチの円の 円周は6.28センチです。 Sample11 5/4は1.0です。 Sample12 5/4は1.25です。 簡単JAVA説明⑧ ・Sample11とSample12の解説 Sample11では、 num1 / num2; はint型 とint型の割り 算のため結果もint型で5/4はint型で値は1です。 それをdouble型に入れています。 Sample12では、(double) num1 / (double) num2; は一度doubleとdoubleの型に変換し、割り算を実行 しています。そのため結果もdouble型で5/4はdouble 型で値は1.25です。それをdouble型に入れています。 簡単JAVA説明⑧ ・演算時の注意 演算を行う場合、基本的には、型変換を行う ことを心がけるとよい。 簡単JAVA説明⑧ まとめ 式のしくみ => オペランド、演算子 計算結果は評価値が返される。 演算子 1.四則演算子 2.文字連結演算子 3.インクリメント、デクリメント演算子 4.代入演算子 5.シフト演算子 簡単JAVA説明⑧ 6.シフト演算子 7.演算子の優先順位 ()の使い方 8.型変換 9.キャスト演算子 10.異なる型どうしの演算 11.同じ型どうしの演算 12.演算時の型変換に注意 簡単JAVA説明⑨ ★関係演算子と条件 1.命題と条件 「80点以上であれば合格」という命題があるとき、 「 80点以上」が「条件」となります。 81点なら 命題は真 79点なら 命題は偽 となります。 簡単JAVA説明⑨ ★if文 1.構文 if (条件) (処理); => Sample1 import java.io.*; class Sample01 { public static void main(String[] args) throws IOException { // プロンプトメッセージを表示 System.out.println("整数を入力してください。"); // キーボード入力ストリームを作成 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // キーボードから文字列を入力し、strに格納 String str = br.readLine(); // 文字列strを整数resに変換 int res = Integer.parseInt(str); if (res == 1) // 整数resの値が1と等しい場合、以下の処理を行う System.out.println("1が入力されました。"); // 終了 System.out.println("処理を終了します。"); } } 簡単JAVA説明⑨ 特に、 if (res == 1) System.out.println(“1が入力されました。”); System.out.println("処理を終了します。"); の部分は 「入力された値が1と等しいとき System.out.println(“1が入力されました。”); の処理を行う」 となり、それ以外のときは、 System.out.println(“処理を終了します。”); が実行されます。 簡単JAVA説明⑨ 2.複数のif文 構文 if (条件){ (処理1) (処理2) ・・・ } =>Sample2 (問 Samle1との違いは?) import java.io.* class Sample02 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) { // 整数resの値が1と等しい場合、以下の処理を行う System.out.println("1が入力されました。"); System.out.println("1が選択されました。"); } // 終了 System.out.println("処理を終了します。"); } } 簡単JAVA説明⑨ ・実行結果 その1 整数を入力してください。 1(を入力) 1が入力されました。 1が選択されました。 処理を終了します。 その2 整数を入力してください。 3(1以外を入力) 処理を終了します。 簡単JAVA説明⑨ (問の答)処理が複数になった場合 { }で囲う必要があります。 { }で囲わないと、2番目の処理はif条件以外でも実行 されてしまいます。 => Sample21 import java.io.* class Sample02 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) // 整数resの値が1と等しい場合、以下の処理を行う System.out.println("1が入力されました。"); System.out.println("1が選択されました。"); // 終了 System.out.println("処理を終了します。"); } } 簡単JAVA説明⑨ ・実行結果 その1 整数を入力してください。 1(を入力) 1が入力されました。 1が選択されました。 処理を終了します。 その2 整数を入力してください。 3(1以外を入力) 1が選択されました。 処理を終了します。 簡単JAVA説明⑨ 3.if ~else~ 構文 if (条件) 処理1; else 処理2; 条件が真のとき処理1、それ以外は処理2 となります。 簡単JAVA説明⑨ 3.if ~else~ 、複数 構文 if (条件){ 処理1; 処理2; ・・・・ } else{ 処理3; 処理4; ・・・・ } import java.io.* class Sample03 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) { // 整数resの値が1と等しい場合、以下の処理を行う System.out.println("1が入力されました。"); } else { // そうでない場合、以下の処理を行う System.out.println("1以外が入力されました。"); } } } 簡単JAVA説明⑨ 実行結果 その1 整数を入力してください。 1(を入力) 1が入力されました。 その2 整数を入力してください。 3(1以外を入力) 1以外が入力されました。 簡単JAVA説明⑨ 4.if~else if ~else(2つ以上の条件の処理) if (条件){ 処理1; ・・・ } else if (条件2){ 処理2; ・・・ } else{ 処理3; ・・・ } import java.io.* class Sample04 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) { // 整数resの値が1と等しい場合、以下の処理を行う System.out.println("1が入力されました。"); } else if (res == 2) { // 整数resの値が2と等しい場合、以下の処理を行う System.out.println("2が入力されました。"); } else { // そうでない場合、以下の処理を行う System.out.println("1か2を入力してください。"); } } } 簡単JAVA説明⑨ 5.switch文 構文 switch(式){ case 値1: 処理1; break; case 値2: 処理2; break; default: 処理3; break; } import java.io.*; class Sample05 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); switch (res) { case 1: // 1の場合 System.out.println("1が入力されました。"); break; case 2: // 2の場合 System.out.println("2が入力されました。"); break; default: // いずれでもない場合 System.out.println("1か2を入力してください。"); break; } } 簡単JAVA説明⑨ switch文 例. switch (res) { case 1: // 1の場合 System.out.println("1が入力されました。"); break; case 2: // 2の場合 System.out.println("2が入力されました。"); break; default: // いずれでもない場合 System.out.println("1か2を入力してください。"); break; } 簡単JAVA説明⑨ 特徴 1.switch文は場合分け処理 2.switch = if~else if~else である。 3.break文について break文は途中で処理の流れを打ち切るもの。 付け忘れ、間違った位置に設定などの場合 でもコンパイルエラーとはならない。 簡単JAVA説明⑨ 6.論理演算子 &&・・・and、 ||・・・or、!・・・not a && b ・・・a,b 双方真のとき真、それ以外は偽です。 a || b ・・・a,b 片方真のとき真、つまり双方偽のとき偽です。 !a ・・・aが偽のとき真です。 例 ( a 、xは実数とします。) 5 > 3 && 3 == 4 ・・・ 3 == 4は偽なので、偽 x > 5 && x == 4 ・・・ 双方をみたすxは存在しないので、偽 a == 6 || a >= 12 ・・・ aの値が6、または12以上で真 !( a == 6 ) ・・・ aの値が6以外は真 import java.io.*; class Sample07 { public static void main(String[] args) throws IOException { System.out.println("あなたは男性ですか?"); System.out.println("YまたはNを入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); if (res == 'Y' || res == 'y') { // 'Y'または'y'の場合 System.out.println("あなたは男性ですね。"); } else if (res == 'N' || res == 'n') { // 'N'または'n'の場合 System.out.println("あなたは女性ですね。"); } else { // いずれでもない場合 System.out.println("YまたはNを入力してください。"); } } } 簡単JAVA説明⑨ 7.条件演算子 「?:」 構文 条件 ? 式1:式2 条件が真のとき式1を実行、偽のとき式2を実行 import java.io.*; class Sample08 { public static void main(String[] args) throws IOException { System.out.println("何番目のコースにしますか?"); System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); // 文字ansを宣言し、整数resの値が1か否かによって、'A'または'B'を 設定する char ans = (res == 1) ? 'A' : 'B'; // 文字ansの値を表示 System.out.println(ans + "コースを選択しました。"); } } 簡単JAVA説明⑨ char ans = (res == 1) ? ‘A’ : ‘B’; は 以下のコードと同じ処理を1行で行っている。 char ans; if (res == 1) { ans = 'A'; } else { ans = 'B'; } (res == 1) ? ‘A’ : ‘B’; をひとつと考えます。 簡単JAVA説明⑨ まとめ 1.関係演算子と条件 2.if文 3.if~else、if~else if ~else 4.switch文 5.論理演算子 6.条件演算子 a? b : c 簡単JAVA説明⑩ ★繰り返し文 1.for文 構文 for( 式1;式2;式3;){ 処理1; 処理2; ・・・ } 簡単JAVA説明⑩ 解説 式1は、変数(カウンタ)初期値 int i=1など 式2は、条件式 式3は、変数(カウンタ)の変化 i++ など 初期値から条件が偽となるまで、変数 (カウンタ)の変化を変化させ処理を行う。 class Sample02 { public static void main(String[] args) { // 「ループ変数」iを1から5まで1ずつ変化させ、 // その間以下の処理を繰り返す for (int i = 1; i <= 5; i++) { // 「ループ変数」iの値を表示 System.out.println(i + "番目の繰り返しです。"); } // 終了 System.out.println("繰り返しが終わりました。"); } } 簡単JAVA説明⑩ 結果 1番目の繰り返しです。 2番目の繰り返しです。 3番目の繰り返しです。 4番目の繰り返しです。 5番目の繰り返しです。 繰り返しが終わりました。 import java.io.*; class Sample03 { public static void main(String[] args) throws IOException { System.out.println("いくつ*を出力しますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); // ループ変数iを1から「整数numの値」まで1ずつ変化さ せ、その間以下の処理を繰り返す for (int i = 1; i <= num; i++) { // "*"を表示 System.out.print("*"); } } } 簡単JAVA説明⑩ 2.while文 構文 while (条件){ 処理; ・・・ } class Sample05 { public static void main(String[] args) { // 整数iを宣言し、1で初期化 int i = 1; // 整数iが5以下である間、以下の処理を繰り返す while (i <= 5) { // 整数iの値を表示 System.out.println(i + "番目の繰り返しです。"); // 整数iの値に1を加える i++; } // 終了 System.out.println("繰り返しが終わりました。"); } } 簡単JAVA説明⑩ このサンプルの結果はSample02と同様です。 1番目の繰り返しです。 2番目の繰り返しです。 3番目の繰り返しです。 4番目の繰り返しです。 5番目の繰り返しです。 繰り返しが終わりました。 簡単JAVA説明⑩ 参考:無限ループ 繰り返し数を制限せずに、繰り返しの処理を 行いたい、あるいはある条件がみたされた場 合、やめにしたいなどの場合に、 「無限ループ」を作成するという手段が考えら れます。 簡単JAVA説明⑩ 無限ループの構文 for (;;){ for(;true;)も可 処理 } While(true) { 処理 } public class Sample100 { public static void main(String[] args) { int i = 0; // 無限ループ for (;;) { if (i == 100) { System.out.println("i = " + i + " : 条件に到達"); break; } System.out.println("i = " + i + " : 計算中"); i++; } } } public class Sample101 { public static void main(String[] args) { int i = 0; // 無限ループ while(true) { if (i == 100) { System.out.println("i = " + i + " : 条件に到達"); break; } System.out.println("i = " + i + " : 計算中"); i++; } } } 簡単JAVA説明⑩ 結果 Sample100、101共に下記のようになります。 i = 0 : 計算中 i = 1 : 計算中 ・・・・ i = 98 : 計算中 i = 99 : 計算中 i = 100 : 条件に到達 簡単JAVA説明⑩ 3.do ~while 構文 do{ 処理1 ・・・ } while(条件); 簡単JAVA説明⑩ 問:なぜ、whileの他にdo whileがあるのでしょう whileとdo whileの違いはなんでしょう? whileは「while(条件)~処理」の繰り返しです。 そのため 最初に(条件)が偽となると処理を一度も行わずで 終わりとなります。しかし、 do whileは 「 do 処理 while(条件) 」なので、一度は処理を行 います。 簡単JAVA説明⑩ 「プロ野球のある球団の入団テストでは、身長 が175cm以上でないとテストが受けられない」 ということもあるようですが、whileはこの状況を 「while (175cm以上) テスト実施」 と記述できます。 他方、 do whileはこの状況にはそぐいません。 例えばdo whileに即した状況はとにかく1名合格を出 したいという状況で 「 do テスト実施 while (合格)」 とでもなりますでしょうか。 class Sample06 { public static void main(String[] args) { // 整数iを宣言し、1で初期化 int i = 1; // 以下の処理を繰り返す do { // 整数iの値を表示 System.out.println(i + "番目の繰り返しです。"); // 整数iの値に1を加える i++; // 整数iが5以下の場合は、処理を繰り返す } while (i <= 5); // 終了 System.out.println("繰り返しが終わりました。"); } } 簡単JAVA説明⑩ Sample06はSample02、 Sample05と同じ結果になり ます。 1番目の繰り返しです。 2番目の繰り返しです。 3番目の繰り返しです。 4番目の繰り返しです。 5番目の繰り返しです。 繰り返しが終わりました。 簡単JAVA説明⑩ 4.文のネスト ① 複数のfor文(多重ループ) for(式1; 式2; 式3){ for (式4; 式5; 式6){ 処理 ・・・ } } class Sample07 { public static void main(String[] args) { /* ループ変数iを0から5の手前まで1ずつ変化させ、 その間以下の処理を繰り返す */ for (int i = 0; i < 5; i++) { /* ループ変数jを0から3の手前まで1ずつ変化させ、 その間以下の処理を繰り返す */ for (int j = 0; j < 3; j++) { // ループ変数iとjの値を表示 System.out.println("iは" + i + ":jは" + j); } } } } 簡単JAVA説明⑩ 実行結果 iは0:jは0 iは0:jは1 iは0:jは2 iは1:jは0 iは1:jは1 iは1:jは2 iは2:jは0 iは2:jは1 iは2:jは2 iは3:jは0 iは3:jは1 iは3:jは2 iは4:jは0 iは4:jは1 iは4:jは2 簡単JAVA説明⑩ 解説 iの5回のまわるループの中で j が3回まわります。 i=0でj=0、1、2と表示されます。 i=1でj=0、1、2と表示されます。 i=2でj=0、1、2と表示されます。 i=3でj=0、1、2と表示されます。 i=4でj=0、1、2と表示されます。 i=5でj=0、1、2と表示されます。 簡単JAVA説明⑩ その他、if文との融合なども考えられます。 class Sample08 { public static void main(String[] args) { // 論理型の変数blを宣言し、falseで初期化する boolean bl = false; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (bl == false) { // 論理値blがfalseの場合"*"を表示 System.out.print("*"); // 論理値blをtrueに変更 bl = true; } else { // 上記以外の場合"-"を表示 System.out.print("-"); // 論理値blをfalseに変更 bl = false; } } System.out.print("\n"); } } } 簡単JAVA説明⑩ 5.処理の流れの変更 ①break文 ブロックからの脱出 ループからの強制終了の場合など。=>Sample09 ②switch文の中でのbreak文 処理のコントロール=>Sample10 ③continue文 繰り返し内の処理を飛ばし、ブロックの先頭に戻り 処理を続ける。 =>Sample11 import java.io.*; class Sample09 { public static void main(String[] args) throws IOException { System.out.println("何番目でループを中止しますか?(1~10)"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); for (int i = 1; i <= 10; i++) { // ループ変数iの値を表示 System.out.println(i + "番目の処理です。"); if (i == res) // ループの外に抜ける break; } //終了 System.out.println("終了しました。"); } } 簡単JAVA説明⑩ 実行結果 何番目でループを中止しますか?(1~10) 3 1番目の処理です。 2番目の処理です。 3番目の処理です。 終了しました。 import java.io.*; class Sample10 { public static void main(String[] args) throws IOException { System.out.println("成績を入力してください(1~5)"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); switch (res) { case 1: case 2: // 1または2の場合 System.out.println("もう少しがんばりましょう。"); break; case 3: case 4: // 3または4の場合 System.out.println("この調子でがんばりましょう。"); break; case 5: // 5の場合 System.out.println("たいへん優秀です。"); break; default: // いずれでもない場合 System.out.println("1~5までの成績を入力してください。"); break; } } } 簡単JAVA説明⑩ 実行結果 その① 成績を入力してください(1~5) 1 もう少しがんばりましょう。 その② 成績を入力してください(1~5) 3 この調子でがんばりましょう。 その③ 成績を入力してください(1~5) 5 たいへん優秀です。 import java.io.*; class Sample11 { public static void main(String[] args) throws IOException { System.out.println("何番目の処理を飛ばしますか?(1~10)"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); for (int i = 1; i <= 10; i++) { // ループ変数iの値が整数resの値と等しい場合 if (i == res) // 以下の処理を飛ばし、ループの先頭から処理を再開する continue; // ループ変数iの値を表示 System.out.println(i + "番目の処理です。"); } // 終了 System.out.println("終了しました。"); } } 簡単JAVA説明⑩ 実行結果 何番目の処理を飛ばしますか?(1~10) 3 1番目の処理です。 2番目の処理です。 4番目の処理です。 5番目の処理です。 6番目の処理です。 7番目の処理です。 8番目の処理です。 9番目の処理です。 10番目の処理です。 終了しました。 簡単JAVA説明⑩ まとめ ① for文 ② while文 ③ do~while文 ④ 2つ以上のfor文 ⑤ break continue ⑥ 無限ループ
© Copyright 2024 ExpyDoc