ヤマムギ

growing hard days.

*

Java SE 7 Silver対策勉強をしながらメモ 2015/2/1

      2015/03/29

本日は繰り返し処理。

配列や演算でひっかけてくる問題に苦戦。
繰り返しだけに頭をとらわれずに、頭を今だけコンパイラと実行環境にしなければ。

いつものごとくマークダウンで記載したのでそのままJetpack Markdownにお任せでアップ

whileのひっかけに注意

[java]
int num = 0;
while (num++ < 5);{
System.out.print(num);
}
[/java]

  • 一見すると01234と出力されそうだが正解は6。
  • while(num++ < 5)の後ろに「;」
  • これは処理なしの while(num++ < 5){};のブロック省略記述
  • なので次の{}ブロックは別物
  • 後置きインクリメントなので、5よりも小さいか判定した後に1加算される

do-whileと後置きインクリメントのOutOfBoundsに注意!!

[java]
int ary[] = {0,1,2,3,4};
int num = 0;
do{
System.out.print(ary[num]);
}while(num++ < ary.length);
[/java]

  • ary.length は5
  • num++ は後置きインクリメントだから、4で判定された後に加算されて5になって、もう一度doが実行されるため、実行時エラーとなる

繰り返しの問題のようで実は宣言範囲だったりするので注意!!

  • まず問題と問題は切り離して考える!!(上の問題の逆のように見てしまうとミスリードされる!!)

[java]
do{
int num = 0;
int ary[] = {0,1,2,3,4};
System.out.print(ary[num++]);
}while(num < ary.length); //コンパイルエラー
[/java]

  • numはdoブロックの中で宣言されているから、doブロックの外のwhile条件で使用する事は出来ない

改めて配列宣言を見なおしておく

  • 宣言時の要素数確保は添え字ではなく要素数である事を忘れない!

[java]
int ary[][] = new int[5][5];
[/java]

  • これは5行5列の2次元配列だから、ary[5][5]なんかはOutOfBounds
  • ちなみにint ary[] = new int[0]は要素数0の配列が出来るだけでコンパイル、実行は出来る。

余りが0でなければtrueのfor文

[java]
for(int i = 0,j = 1; (i+j)%3 != 0; i++,j++){
System.out.print(true);
}
[/java]

  • 1周目は (0+1)%3 != 0 はtrueなのでtrueが出力
  • 2週目は (1+2)%3 != 0 はfalseなのでループ終了

0%整数は0である

  • (0%2 == 0) はtrue
  • 0 割る整数は0なので余りも0といえる

左辺で要素数が指定できるはずがない!!

  • いい加減に配列文法にひっかからない!!

[java]
int[5] array = {1,2,3,4,5}; //コンパイルエラー
int[] array2 = {1,2,3,4,5}; //正解
[/java]

Stringのlength()メソッドと配列のlengthフィールドとついでにArrayListのsize()メソッド

  • String.length()メソッド 文字数を返す
  • 配列.lengthフィールド 要素数
  • ArrayList.size() 要素数を返す

最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - Java, study , ,

ad

ad

  関連記事

DevLOVE関西「事業会社の現場を知ろう~モノタロウ編~」に行ってきました

DevLOVE関西「事業会社の現場を知ろう~モノタロウ編~」 モノタロウさんプラ …

「AWS認定 デベロッパーアソシエイトの試験に出るかもなデモ見せあいっこ(ヤマムギvol.12)」を開催しました

デモ勉強会を開催しました! 2021/4/7にヤマムギ12回目の勉強会「AWS認 …

Developers Summit 2024「徹底解剖!?JALインフォテック様が取り組む予兆検知/早期復旧を可能にするデータ分析/活用戦略とは?」を見ました

株式会社JALインフォテック サービス事業本部 IT基盤事業部 共通サービス基盤 …

ひと味違った南国の熱量を感じた高知の午後 ~「コミュニティリーダーズサミット in 高知 2018」に行ってきました~

「コミュニティリーダーズサミット in 高知 2018」という、イカしたイベント …

Java SE 7 Silver対策勉強をしながらメモ 2015/1/29

さて本日は少しだけですが、試験対策のメモをいつものごとくマークダウンで記載したの …

Java SE 7 Silver対策勉強をしながらメモ 2015/2/9

練習問題2日目。 同じ問題にひっかかる。つまづく。 集中力が足りない。 途中から …

Developers Summit 2024「パスワードレス認証とは?Passkeysを導入することで得られるユーザー体験と考慮点」を見ました

Okta Japan株式会社 プリンシパルデベロッパーアドボケイト 池原 大然さ …

「AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる Amplify + Admin UI」に参加しました。

亀田さんが定期開催というか、高頻度開催されている「AWSの基礎を学ぼう 特別編  …

IoTセミナー in おおさか「IoTで変わる!企業と働き方」に行ってきました

これからの企業と働き方 ~IoT・AIが創造する未来~ さくらインターネット株式 …

「SendGrid Night in Osaka #2」でLTさせていただきました

SendGrid Night in Osaka #2でLTをしてきました。 会場 …