明解Java入門編 第4章終了

実際のとこは6・7日ぐらいに終了していたのですが、
なんというか時間がなかったというか・・・
まぁぶっちゃけて言えば開始早々ブログをさぼっていたわけです(ノ∀`*)ペチ
実際忙しいことは忙しかったんですが、まぁ全く書けないほど時間がなかったわけじゃないのでw


そんなわけで遅れましたが4章が終わったので、
前回の続きから終わりまでの分をまとめたいと思います。

break文とcontinue文

まぁこれも前回と同じく、ある程度プログラムを組んだことがある人なら
基礎的な文なのでわかると思いますし、難しいことではないのでサクッといきます−。
後、このブログ自体が現時点では自分用のまとめを目的としてますしねw

break文

switch文とループ内または後述のラベル付の文から
break文が実行された時点で強制的に中断・終了させます。


まずswitch文ではbreak文はほぼ必須ですね。
caseで分岐させて実行した処理の後にこの文を入れないと
別のcaseの処理まで実行されてしまいますから。

//条件1にbreak文がないので条件1の場合、処理1と処理2の両方が実行される。
//条件2と3はbreak文があるので、それぞれの条件のそれぞれの処理のみ実行される。
switch (評価対象) {
    case 条件1:
        処理1;
    case 条件2: 
        処理2;
        break;
    case 条件3:
        処理3;
        break;
}
ループ内では基本的にはあまり使用せず、使う時はまだループ条件を満たしていても、
何か別の条件を満たしたら終了させたい場合に使用する。
例えば、じゃんけんゲームとかでチャンスは5回という設定で
for文で5回ループさせるんだけど、3回勝ったらその時点でループを終了させ、
勝利という表示をさせるとか。
簡単に書くとこんな感じですかね。
>|java|
int winCount = 0;
for (int i = 0; i < 5; i++) {
    //ジャンケンの処理(勝ったらwinCountに+1される)
    if (winCount >= 3) break;
}
if (winCount >= 3)
    System.out.print("あなたの勝利です。");
else
    System.out.print("あなたの負けです。");

最後にJava独自(たぶん)のラベル付の文の場合です。
break文はループでいうとループ一つ分しか脱出できませんので、
多重ループの内から一気に一番外まで脱出したい時などに使います。

//ラベル名:文 で文にラベルを付ける事ができ、
//break ラベル名 で指定したラベルの文から脱出できる。

//この場合だとbreak OutLoop;は条件2のループからの脱出ではなく、
//外側の条件1のループから脱出する。
OutLoop:
    while (条件1) {
        while (条件2) {
            break OutLoop;
        }
    }

基本的な使い方はこんな感じで、たぶん使い捨てのプログラムぐらいにしか
使われないと思うのですが、下記のような方法もOKだそうです。

//下記のような { } (ブロック文)にラベルをつけただけのものでも使用可
Label :
    {
        処理1;
        break Label;
        処理2;
    }


と、長くなってきたのですみませんが、
ここからはほんとに自分向けの簡単なまとめでいきます^^;

continue文

ループ内または後述のラベル付のループ文からcontinue文が実行された時点で
強制的にループ末尾へジャンプさせます。


つまり、

do〜while文とwhile文の場合
実行された時点でループ条件が評価される。
for文の場合
実行された時点でi++などの更新処理が実行され、ループ条件が評価される。

という事になります。
また、break文と同じくラベル付のループ文にも対応しているので、
continue ラベル名; で指定したラベルの末尾へジャンプさせる事ができます。

ただし、break文と違い{ }のラベル付ブロック文には対応してないので注意して下さい。

printf文

書式指定が可能なprint文。


まず構文?は、

System.out.printf("書式指定", 式);

となります。

  • 書式指定
    • % から始まる文(変換文字)で表記し、ここに指定された形で式の値が出力される。
    • 文字を添える事も可能で、文字はスペース含めて全て記述した通りに出力される。
    • ただし、% は後述の書式指定の先頭文字で % を使用するので %% と記述する必要がある。
    • 変数やリテラル(整数・浮動小数点・文字列)など出力するもの。
    • 複数指定する事も可能で、その場合は , で区切って指定する。


書式指定の変換文字でよく使用するもの

%d 10進数
%o 8進数
%x 16進数
%f 小数点形式
%s 文字列

式の値が変換文字で指定した形式に変換されて出力される。
例えば、式の部分が8進数であっても、書式指定で10進数が指定してあれば、10進数に変換されて出力されます。
ただし、数値→文字列は可能でも、文字列→数値は不可。


%の後に数字を加えることで桁数などを指定可能。

%3d
最低3桁の10進数で出力
%05d
最低5桁で、余白を0で埋めた10進数で出力
%7.2f
最低7桁で、小数点以下は2桁で出力
%10s
最低10桁の文字列を出力

注意点としては、最低○桁なので出力する値がより大きい桁の場合は、
制限されるわけではなく全て表示されることと、
小数点形式の桁数には小数点も含まれ、小数点以下が無指定の場合は
6桁表示されることです。


例として、

//最低5桁なので余白が2つ
System.out.printf("%5d",123);
  123
//上記と同じだが0が指定してあるので、余白が0に
System.out.printf("%05d",123);
00123
//指定した桁よりも桁が大きいので全て表示されている
System.out.printf("%05d",1234567);
1234567
//無指定なので小数点以下は6桁表示され、
//小数点含めて10桁なので余白が5つ
System.out.printf("%15f",123);
     123.000000
//小数点以下が指定されてある通り2桁
System.out.printf("%9.2",123);
   123.00
//5桁で指定されてあるので余白2つで文字列が表示
System.out.printf("%5s","ABC");


とりま4章はこんな感じで終了しました。
まぁブログ書き始めたのが途中なので、4章も中途半端から始まってますがw


それにしても簡潔にまとめようとしたり、丁寧に説明しようとしたりと、
ごちゃまぜになってるので文体が変わりまくりですね。。。
このままだと読みにくいんだろうなぁ(´・ω・`)