レポート#3
課題
多くのJava制御文を用いてオリジナルのJavaアプリケーションによる初級問題を作成し、
模範解答例を示せ。
ーーー問題ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
次のプログラムを実行した場合、どのような結果がディスプレイに実行されるか?
表示される通りに書け。
[Masaki-HIGA:~/java-rep/rep#3] j03043% cat test.java
class test{
public static void main (String[] args) {
System.out.println("[Q1]");
For();
System.out.println("\n[Q2]");
If();
System.out.println("\n[Q3]");
Switch();
System.out.println("\n[Q4]");
While();
System.out.println("\n[Q5]");
Break();
System.out.println("\n[Q6]");
Continue();
System.out.println("\n[Q7]");
Mondai();
}
/*for文*/
public static void For() {
for( int i=-2; i<1; i++) {
System.out.println("i="+i);
}
}
/*if文*/
public static void If() {
int a=10, b=5, c=15;
if(a < b)
System.out.println("1");
if(c / b == 2)
System.out.println("2");
if(c % a == 5)
System.out.println("3");
if(a + b > c)
System.out.println("4");
else if(a + b < c)
System.out.println("5");
else
System.out.println("6");
if(c - a < b)
System.out.println("7");
else if(c - a > b)
System.out.println("8");
else
System.out.println("9");
}
/*switch文*/
public static void Switch() {
int i=3;
switch (i) {
case 1:
System.out.println("a");
case 2:
System.out.println("b");
case 3:
System.out.println("c");
case 4:
System.out.println("d");
break;
default:
System.out.println("e");
}
}
/*while文*/
public static void While() {
int i=3;
while (i<3)
System.out.println("a");
do{
System.out.println("b");
}
while (i<3);
}
/*break*/
public static void Break() {
for (int i=0; i<5; i++) {
System.out.println("i="+i);
if (i == 2) break;
}
}
/*continue*/
public static void Continue() {
for (int i=0; i<5; i++) {
System.out.println("i="+i);
if (i == 2) continue;
System.out.println("*******");
}
}
public static void Mondai() {
for (int a=1; a<4; a++) {
for ( int b=5; b>1; b--) {
System.out.println("a="+a+ ",b="+b);
if (a == 2) continue;
System.out.println("##########");
if (b == 3) break;
System.out.println("**********");
}
}
}
}
ーーー解答ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
[Masaki-HIGA:~/java-rep/rep#3] j03043% java test
[Q1]
i=-2
i=-1
i=0
[Q2]
3
6
9
[Q3]
c
d
[Q4]
b
[Q5]
i=0
i=1
i=2
[Q6]
i=0
*******
i=1
*******
i=2
i=3
*******
i=4
*******
[Q7]
a=1,b=5
##########
**********
a=1,b=4
##########
**********
a=1,b=3
##########
a=2,b=5
a=2,b=4
a=2,b=3
a=2,b=2
a=3,b=5
##########
**********
a=3,b=4
##########
**********
a=3,b=3
##########
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
考察
for文
for文の使い方はCのときとなんら変わらないと思います。
ただ、Javaでは前のレポートにも書きましたがfor()内で変数を宣言できます。
あと少し特殊な書き方もできます。
ーーープログラムーーーーー
[Masaki-HIGA:~/java-rep/rep#3] j03043% cat sample.java
/*
for文の特殊な書き方
*/
class sample {
public static void main(String[] args) {
for (int i=0; i<5; i++,
System.out.println("i="+i));
}
}
ーーー結果ーーーーーーーー
[Masaki-HIGA:~/java-rep/rep#3] j03043% java sample
i=1
i=2
i=3
i=4
i=5
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
この書き方をすれば文のなかで『,』で区切ることにより、複数の変数宣言や
複数行のプログラムの実行をすることができます。
あと気になったのがfor()内での
i=0; i<5; i++
という部分がこの特殊な書き方をしなければ実行したとき、i=0からi=4まで
表示されるはずなのに、この書き方をしたらi=1からi=5まで表示されているところです。
if文
if文は
といった感じで使うかもしくは
と使います。もし()の中が真だったら文を実行するといった感じです。
これはC言語との違いはわかりません。
switch文
switch文は
switch(値) {
case 値1:
文1
break;
case 値2:
文2
break;
・・・
case 値n:
文n
break;
default:
デフォルト文
break;
}
|
と使います。switch文は条件によって3つ以上の処理を選ばせたいときに
使うと便利です。注意するのは、条件にあったcase文が実行された後に
breakのキーワードがない場合、次のcase文が無条件に実行されてしまうことです。
今回の課題のテスト問題でもひっかけ(誰に?)としてbreakをひとつしかつけてません。
while文
while文は
do~while文は
と使います。二つの共通点は与えられた条件が真の間は何度も処理を繰り返すこと。
違いとしてはwhile文は条件によっては一度もwhile文の中の処理が実行されない
こともあるが、do~while文は必ず一回はdo文の中の処理が実行される。
break、continue、return、throw
これらはwhile、do、forによる繰り返し処理を何かの条件により中断するキーワードです。
簡単に説明すると
break |
ループを終了して、ループ外に抜ける。 |
continue |
ループを中断し、次のループを実行する。 |
return |
ループのあるメソッドそのものを抜けて、メソッドの呼び出しもとに戻る。 |
throw |
例外を発生させて、例外処理を定義している場所に処理を移す。 |
breakは課題のプログラムでもわかるように、i==2となった時点で実行され、
その結果for文が終了しています。
continueの場合はi==2となった時に実行され、次に画面に出力されるはずの
*を出力せず(中断)i==3の時の処理にうつります。
感想・反省
琉大祭で遊んでしまってこのレポートをやりはじめたのが夜の1時頃、
でも321に来てみるとなんだかやってるだけでもマシな雰囲気でした。
目標は朝の8時には家に帰って寝ることだったのに終わるのが8時頃に
なってしまいました。今回テスト問題を作るのでしたがなんか問題の出し方が
かなり適当です。大目にみてください。
参考文書
はじめてのJavaプログラミング
やさしいJava
ちょっとトラ本