java入門② 変数と型 式と演算子 制御文 -...

123
JAVA入門② 変数と型 式と演算子 制御文 JAVA入門② 変数と型 式と演算子 制御文

Upload: others

Post on 21-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

JAVA入門②変数と型

式と演算子制御文

JAVA入門②変数と型

式と演算子制御文

Page 2: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

★変数と型

1.変数とは?

・中高(数学等)では

変数=x?つまり

変数="任意の値をとり得る文字"

・プログラミング(JAVA)では

変数=値を入れておく入れ物

Page 3: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

2.識別子

変数の名前として使える文字・数字を

「識別子」

と呼ぶ。

Page 4: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

3.識別子(変数)の制限

①英字、数字、アンダースコア、$を用いる

例.Num、Num1、Num_1、Num$1

②長さはいくらでもよい。

③予約語は使えない。

④数字からははじめない。

1Num、100%Num は不可。

⑤大文字と小文字は区別される。

Page 5: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

★型

①.変数には値を記憶させる。

②.値には「種類」がある。

③.「種類」のことを「型」という。

④. 変数は必ず型を指定する必要がある。

Page 6: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単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^31-

1)

Page 7: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

f. long ・・・8バイト整数

(ー9223372036854775808~

9223372036854775807=2^63-1)

g. float・・・4バイト単精度浮動小数点数

(-128~127)

h. double・・・8バイト単精度浮動小数点数

(-128~127)

Page 8: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

★変数の宣言

1.変数の宣言「変数に名前をつける。」

「変数は必ず型を指定する必要がある。」

この2つをコード中で行うことを

「変数を宣言する」

という。

※イメージとしては

「入れ物を用意し名前を付けておく」

という感じです。

Num

Num

Page 9: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

具体的には

「型名 識別子(変数);」

int Num ;

char Car ;

Page 10: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

2.応用問:なぜ変数を宣言するときに型をしていするのか?

実は、変数を宣言するときその型に応じたメモリ領域が確保されます。(P51図)

・「変数を宣言する」とは変数分の領域を確保することに他ならない。

次のことも明らか。

・型に応じて確保されるサイズは異なる。

プログラムを組む上で

・不要な変数は宣言しない

Page 11: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

★変数の利用

1.変数に値を代入

変数を宣言した後、特定の値を記憶させます。

Num = 5;

※上記の = は「代入」の意味です。

右辺を左辺に「代入」という意味になります。

※イメージとしては、

「用意した入れ物にモノを入れる。」

という感じです。図3-5(P52)

Num

Page 12: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

・具体例class Sample1 {

public static void main(String[] args) {

// 整数型の変数numの宣言

int num;

// 変数numに3を代入

num = 3;

// 変数numの値を表示

System.out.println("変数numの値は" + num + "です。");

}

}

Page 13: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

・実行結果

変数numの値は3です。

Page 14: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

注意

なぜ出力結果は

「変数numの値はnumです。」

ではないのでしょう?

実は、出力文内で変数を直接書くと

「変数の値」

が表示されます。

Page 15: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

2.変数の初期化

int num;

num = 3;

を一文で

int num = 3;

と書けます。

このように書くのは文頭であり、

「初期化する。」と言います。

Page 16: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

3.変数の値の変更

次のことを理解していただければよいです。

「変数は上書き変更が可能」

=> Sample2

★変数同士の代入

変数同士でも「= は代入の意味」を適用。

=> Sample3

Page 17: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単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 + "です。");

}

}

Page 18: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単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 + "です。");

}

}

Page 19: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

★キーボードからの入力

次のSample4ではキーボードから文字を入力し

表示、 Sample5ではキーボードから数値を入力し

表示するサンプルを示します。

System.out.println(“”);

以外は今回は無視して一種のおまじない

と思ってください。

Page 20: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単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 + "が入力されました。");

}

}

Page 21: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*;class Sample05 {

public static void main(String[] args) throws IOException {

// プロンプトメッセージを表示

System.out.println("整数を入力してください。");// キーボード入力ストリームを作成

BufferedReader br = new BufferedReader(newInputStreamReader(System.in));

// キーボードから文字列を入力し、strに格納

String str = br.readLine();// 【文字列strを整数numに変換】

int num = Integer.parseInt(str);// 整数numの値を表示

System.out.println(num + "が入力されました。");

}

}

Page 22: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑦簡単JAVA説明⑦

まとめ

変数

識別子

型と名前

予約語

変数 = ●;(=は代入)

変数は上書き可能

キーボードからの入力

Page 23: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

★式と演算子

1.式のしくみ

・式とは?=>数式 x+y、5+3

・プログラミング(JAVA)における式は

「オペランド+演算子」

x+yでいうx、yがオペランド、+が演算子

=>Sample1

Page 24: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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) + "です。");

}

}

Page 25: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

出力結果

1+2は3です。

3*4は12です。

Page 26: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

2.式の値の出力

(1+2)、(3*4)はその

「評価値(計算値)」

を返します。

これは変数を用いた場合も成り立ちます。

=>Sample2

Page 27: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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 + "です。");

}

}

Page 28: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

出力結果

変数num1の値は2です。

変数num2の値は3です。

変数num3の値は5です。

変数num1の値に1をたすと3です。

Page 29: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

3.応用

キーボードから適当な数値を入力してそのたし算の結果を表示する。

=>Sample3

Page 30: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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) + "です。");

}

}

Page 31: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

実行結果

整数を2つ入力してください。

たし算の結果は11です。

Page 32: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

★式と演算子

1.式のしくみ

・式とは?=>数式 x+y、5+3

・プログラミング(JAVA)における式は

「オペランド+演算子」

x+yでいうx、yがオペランド、+が演算子

=>Sample1

Page 33: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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) + "です。");

}

}

Page 34: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

出力結果

1+2は3です。

3*4は12です。

Page 35: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

2.式の値の出力

(1+2)、(3*4)はその

「評価値(計算値)」

を返します。

これは変数を用いた場合も成り立ちます。

=>Sample2

Page 36: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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 + "です。");

}

}

Page 37: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

出力結果

変数num1の値は2です。

変数num2の値は3です。

変数num3の値は5です。

変数num1の値に1をたすと3です。

Page 38: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

3.応用

キーボードから適当な数値を入力してそのたし算の結果を表示する。

=>Sample3

Page 39: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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) + "です。");

}

}

Page 40: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

実行結果

整数を2つ入力してください。

たし算の結果は11です。

Page 41: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

★式と演算子いろいろな演算子

1.四則演算子

+ー×÷(→÷ではなく/を使う)

=>Sample04

2.文字連結演算子

●System.out.println();中で用いている例。

Sample03の下記の+記号System.out.println(“たし算の結果は” + (num1 + num2) + “で

す。”);

Page 42: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

3.インクリメント、デクリメント演算子

++:インクリメント

ーー:デクリメント

例 a++; 、a--;

a++; はa=a+1;と同じ意味

a‐‐; はa=aー1;と同じ意味

Page 43: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

●インクリメントの前置きと後ろ置き

①b=a++; と ②b=++a; の違い

①はb=a; 、a=a+1; の意味

②はa=a+1;、 b=a; の意味

Page 44: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

4.代入演算子

簡単JAVA説明⑦の変数の利用でも書きましたが

「=」 は「代入」の意味です。

●= は ●を行った後、代入という意味となります。

a ●= b; は、a = a ● b; と同じ意味です。

以下一覧です。

+= : 加算代入

-= : 減算代入

*= : 乗算代入

Page 45: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

/= : 除算代入

%= : 剰余代入

&= : 論理積代入

|= : 論理和代入

^= : 排他論理和代入

<<= : 左シフト代入

>>= : 右シフト代入

>>>= : 符号なし右シフト代入

Sample6は += の使用例です。

Page 46: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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 + "です。");

}

}

Page 47: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

5.シフト演算子

・右シフト

0000000000000101 = 5

5 << 2 は以下の意味:左へ2つずらし、00を埋める

0000000000010100 = 20

・左シフト

0000000000000101 = 5

5 >> 2 は以下の意味:右へ2つずらし、00を埋める

0000000000000001 = 1

Page 48: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

6.演算子の優先順位

():引数、[]:配列は最優先、次は++、-- で 計算系(四則)、比較系、論理系

のように目安を覚えておいて使う時には一 覧を参照すればよいと思われます。

Page 49: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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+ " です。");

の場合どうなるでしょう?

Page 50: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

たし算の+と結合の+では、結合の+が優先されます。

上の例では計算の+の意味はなくなり、+は結合の意味に理解され、表示結果は

1+2は12です。となります。

これに対し*はそのまま計算の意味で

3*4は12です。と表示されます。

★:計算部分には()をつけるというのを心がけるとよいです。

Page 51: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

7.型変換

小サイズ(int) → 大サイズ(double)

=> Sample8 => 何もせずに入力可

大サイズ(double) → 小サイズ(int)

=> Sample9 => キャストが必要

Page 52: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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 + "センチです。");

}

}

Page 53: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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 + "センチです。");

}

}

Page 54: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

実行結果

Sample8

身長は160センチです。

double型の変数に代入します。

身長は160.0センチです。

Sample9

身長は160.0センチです。

int型の変数に代入します。

身長は160センチです。

Page 55: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

・キャスト演算子

形式: (型名) 式

double a=1.0;

int b = (int)a;

◎小サイズ→大サイズにも適用可能

int c=1;

double d = (double)c;

Page 56: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

8.異なる型どうしの演算

異なる型どうしの演算は、一方のオペランド

を大きなサイズの型に変換してから演算が

行なわれる。

=> Sample10

9.同じ型どうしの演算

同じ型どうしの演算結果はまたその型に

なります。これが意外な結果になることもあります。

=> Sample11、 Sample12

Page 57: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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) + "センチです。");

}

}

Page 58: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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 + "です。");

}

}

Page 59: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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 + "です。");

}

}

Page 60: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

実行結果

Sample10

直径が2センチの円の

円周は6.28センチです。

Sample11

5/4は1.0です。

Sample12

5/4は1.25です。

Page 61: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単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型に入れています。

Page 62: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

・演算時の注意

演算を行う場合、基本的には、型変換を行う

ことを心がけるとよい。

Page 63: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

まとめ

式のしくみ => オペランド、演算子

計算結果は評価値が返される。

演算子

1.四則演算子

2.文字連結演算子

3.インクリメント、デクリメント演算子

4.代入演算子

5.シフト演算子

Page 64: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑧簡単JAVA説明⑧

6.シフト演算子

7.演算子の優先順位 ()の使い方

8.型変換

9.キャスト演算子

10.異なる型どうしの演算

11.同じ型どうしの演算

12.演算時の型変換に注意

Page 65: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

★関係演算子と条件

1.命題と条件

「80点以上であれば合格」という命題があるとき、

「 80点以上」が「条件」となります。

81点なら 命題は真

79点なら 命題は偽

となります。

Page 66: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

★if文

1.構文

if (条件)

(処理);

=> Sample1

Page 67: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*;

class Sample01 {

public static void main(String[] args) throws IOException {

// プロンプトメッセージを表示

System.out.println("整数を入力してください。");

// キーボード入力ストリームを作成

BufferedReader br = new BufferedReader(newInputStreamReader(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("処理を終了します。");

}

}

Page 68: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨特に、

if (res == 1)

System.out.println(“1が入力されました。”);

System.out.println("処理を終了します。");

の部分は

「入力された値が1と等しいときSystem.out.println(“1が入力されました。”);

の処理を行う」となり、それ以外のときは、

System.out.println(“処理を終了します。”);

が実行されます。

Page 69: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

2.複数のif文

構文

if (条件){

(処理1)

(処理2)

・・・

=>Sample2 (問 Samle1との違いは?)

Page 70: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*

class Sample02 {

public static void main(String[] args) throws IOException {

System.out.println("整数を入力してください。");

BufferedReader br = new BufferedReader(newInputStreamReader(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("処理を終了します。");

}

}

Page 71: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

・実行結果その1

整数を入力してください。

1(を入力)

1が入力されました。

1が選択されました。

処理を終了します。

その2

整数を入力してください。

3(1以外を入力)

処理を終了します。

Page 72: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

(問の答)処理が複数になった場合

{ }で囲う必要があります。

{ }で囲わないと、2番目の処理はif条件以外でも実行されてしまいます。

=> Sample21

Page 73: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*

class Sample02 {

public static void main(String[] args) throws IOException {

System.out.println("整数を入力してください。");

BufferedReader br = new BufferedReader(newInputStreamReader(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("処理を終了します。");

}

}

Page 74: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

・実行結果その1

整数を入力してください。

1(を入力)

1が入力されました。

1が選択されました。

処理を終了します。

その2

整数を入力してください。

3(1以外を入力)

1が選択されました。

処理を終了します。

Page 75: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

3.if ~else~

構文

if (条件)

処理1;

else

処理2;

条件が真のとき処理1、それ以外は処理2

となります。

Page 76: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

3.if ~else~ 、複数

構文if (条件){

処理1;

処理2;

・・・・

}

else{

処理3;

処理4;

・・・・

}

Page 77: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*

class Sample03 {

public static void main(String[] args) throws IOException {

System.out.println("整数を入力してください。");

BufferedReader br = new BufferedReader(newInputStreamReader(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以外が入力されました。");

}

}

}

Page 78: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

実行結果

その1

整数を入力してください。

1(を入力)

1が入力されました。

その2

整数を入力してください。

3(1以外を入力)

1以外が入力されました。

Page 79: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

4.if~else if ~else(2つ以上の条件の処理)if (条件){

処理1;

・・・

}

else if (条件2){

処理2;

・・・

}

else{

処理3;

・・・

Page 80: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*

class Sample04 {

public static void main(String[] args) throws IOException {

System.out.println("整数を入力してください。");

BufferedReader br = new BufferedReader(newInputStreamReader(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を入力してください。");

}

}

}

Page 81: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨5.switch文

構文switch(式){

case 値1:

処理1;

break;

case 値2:

処理2;

break;

default:

処理3;

break;

Page 82: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*;

class Sample05 {

public static void main(String[] args) throws IOException {

System.out.println("整数を入力してください。");

BufferedReader br = new BufferedReader(newInputStreamReader(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;

}

}

}

Page 83: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単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;

}

Page 84: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

特徴

1.switch文は場合分け処理

2.switch = if~else if~else である。

3.break文について

break文は途中で処理の流れを打ち切るもの。

付け忘れ、間違った位置に設定などの場合

でもコンパイルエラーとはならない。

Page 85: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単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以外は真

Page 86: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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(newInputStreamReader(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を入力してください。");

}

}

}

Page 87: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

7.条件演算子 「?:」

構文

条件 ? 式1:式2

条件が真のとき式1を実行、偽のとき式2を実行

Page 88: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*;

class Sample08 {

public static void main(String[] args) throws IOException {

System.out.println("何番目のコースにしますか?");

System.out.println("整数を入力してください。");

BufferedReader br = new BufferedReader(newInputStreamReader(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 + "コースを選択しました。");

}

}

Page 89: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

char ans = (res == 1) ? ‘A’ : ‘B’; は以下のコードと同じ処理を1行で行っている。

char ans;

if (res == 1) {

ans = 'A';

} else {

ans = 'B';

}

(res == 1) ? ‘A’ : ‘B’; をひとつと考えます。

Page 90: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑨簡単JAVA説明⑨

まとめ

1.関係演算子と条件

2.if文

3.if~else、if~else if ~else

4.switch文

5.論理演算子

6.条件演算子 a? b : c

Page 91: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

★繰り返し文

1.for文

構文

for( 式1;式2;式3;){

処理1;

処理2;

・・・

Page 92: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

解説

式1は、変数(カウンタ)初期値 int i=1など

式2は、条件式

式3は、変数(カウンタ)の変化 i++ など

初期値から条件が偽となるまで、変数

(カウンタ)の変化を変化させ処理を行う。

Page 93: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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("繰り返しが終わりました。");

}

}

Page 94: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

結果

1番目の繰り返しです。

2番目の繰り返しです。

3番目の繰り返しです。

4番目の繰り返しです。

5番目の繰り返しです。

繰り返しが終わりました。

Page 95: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*;

class Sample03 {

public static void main(String[] args) throws IOException {

System.out.println("いくつ*を出力しますか?");

BufferedReader br = new BufferedReader(newInputStreamReader(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("*");

}

}

}

Page 96: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

2.while文

構文

while (条件){

処理;

・・・

}

Page 97: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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("繰り返しが終わりました。");

}

}

Page 98: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

このサンプルの結果はSample02と同様です。

1番目の繰り返しです。

2番目の繰り返しです。

3番目の繰り返しです。

4番目の繰り返しです。

5番目の繰り返しです。

繰り返しが終わりました。

Page 99: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

参考:無限ループ

繰り返し数を制限せずに、繰り返しの処理を

行いたい、あるいはある条件がみたされた場

合、やめにしたいなどの場合に、

「無限ループ」を作成するという手段が考えら

れます。

Page 100: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

無限ループの構文

for (;;){ for(;true;)も可

処理

}

While(true) {

処理

}

Page 101: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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++;

}

}

}

Page 102: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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++;

}

}

}

Page 103: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

結果 Sample100、101共に下記のようになります。

i = 0 : 計算中

i = 1 : 計算中

・・・・

i = 98 : 計算中

i = 99 : 計算中

i = 100 : 条件に到達

Page 104: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

3.do ~while

構文

do{

処理1

・・・

} while(条件);

Page 105: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

問:なぜ、whileの他にdo whileがあるのでしょう

whileとdo whileの違いはなんでしょう?

whileは「while(条件)~処理」の繰り返しです。

そのため

最初に(条件)が偽となると処理を一度も行わずで

終わりとなります。しかし、 do whileは

「 do 処理 while(条件) 」なので、一度は処理を行

います。

Page 106: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

「プロ野球のある球団の入団テストでは、身長

が175cm以上でないとテストが受けられない」

ということもあるようですが、whileはこの状況を

「while (175cm以上) テスト実施」

と記述できます。

他方、 do whileはこの状況にはそぐいません。

例えばdo whileに即した状況はとにかく1名合格を出

したいという状況で

「 do テスト実施 while (合格)」

とでもなりますでしょうか。

Page 107: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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("繰り返しが終わりました。");

}

}

Page 108: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

Sample06はSample02、 Sample05と同じ結果になり

ます。

1番目の繰り返しです。

2番目の繰り返しです。

3番目の繰り返しです。

4番目の繰り返しです。

5番目の繰り返しです。

繰り返しが終わりました。

Page 109: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

4.文のネスト

① 複数のfor文(多重ループ)

for(式1; 式2; 式3){

for (式4; 式5; 式6){

処理

・・・

}

}

Page 110: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

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);

}

}

}

}

Page 111: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単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

Page 112: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単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と表示されます。

Page 113: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単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;

Page 114: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

} else {

// 上記以外の場合"-"を表示

System.out.print("-");

// 論理値blをfalseに変更

bl = false;

}

}

System.out.print("¥n");

}

}

}

Page 115: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

5.処理の流れの変更

①break文

ブロックからの脱出

ループからの強制終了の場合など。=>Sample09

②switch文の中でのbreak文

処理のコントロール=>Sample10

③continue文

繰り返し内の処理を飛ばし、ブロックの先頭に戻り

処理を続ける。 =>Sample11

Page 116: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*;

class Sample09 {

public static void main(String[] args) throws IOException {

System.out.println("何番目でループを中止しますか?(1~10)");

BufferedReader br = new BufferedReader(newInputStreamReader(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("終了しました。");

}

}

Page 117: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

実行結果

何番目でループを中止しますか?(1~10)

3

1番目の処理です。

2番目の処理です。

3番目の処理です。

終了しました。

Page 118: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*;

class Sample10 {

public static void main(String[] args) throws IOException {

System.out.println("成績を入力してください(1~5)");

BufferedReader br = new BufferedReader(newInputStreamReader(System.in));

String str = br.readLine();

int res = Integer.parseInt(str);

switch (res) {

case 1:

case 2: // 1または2の場合

System.out.println("もう少しがんばりましょう。");

break;

Page 119: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

case 3:

case 4: // 3または4の場合

System.out.println("この調子でがんばりましょう。");

break;

case 5: // 5の場合

System.out.println("たいへん優秀です。");

break;

default: // いずれでもない場合

System.out.println("1~5までの成績を入力してください。");

break;

}

}

}

Page 120: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

実行結果

その①成績を入力してください(1~5)

1

もう少しがんばりましょう。

その②成績を入力してください(1~5)

3

この調子でがんばりましょう。

その③成績を入力してください(1~5)

5

たいへん優秀です。

Page 121: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

import java.io.*;

class Sample11 {

public static void main(String[] args) throws IOException {

System.out.println("何番目の処理を飛ばしますか?(1~10)");

BufferedReader br = new BufferedReader(newInputStreamReader(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("終了しました。");

}

}

Page 122: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

実行結果

何番目の処理を飛ばしますか?(1~10)

3

1番目の処理です。

2番目の処理です。

4番目の処理です。

5番目の処理です。

6番目の処理です。

7番目の処理です。

8番目の処理です。

9番目の処理です。

10番目の処理です。

終了しました。

Page 123: JAVA入門② 変数と型 式と演算子 制御文 - TUISmackin/java/2006/slides/20060426.pdf2006/04/26  · ①英字、数字、アンダースコア、$を用いる 例.Num、Num1、Num_1、Num$1

簡単JAVA説明⑩簡単JAVA説明⑩

まとめ

① for文

② while文

③ do~while文

④ 2つ以上のfor文

⑤ break continue

⑥ 無限ループ