簡単JAVA説明⑧

Download Report

Transcript 簡単JAVA説明⑧

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
⑥ 無限ループ