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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
第5回 八子クラウド座談会in関西 「関西まるっとIoTでやったらんかい♬」に行ってきました
SIMの契約変更のはざまで通信がほぼ使えず。 そんな状態なので、Twitterで …
-
-
Java SE 7 Silver対策勉強をしながらメモ 2015/2/10
練習問題3日目。 疲れてきた。 でも明日は休みだし一気にやる。 いつものごとくマ …
-
-
「Amazon SageMaker|機械学習エンジニア向けセッション+体験ハンズオン」に行ってきました
残念ながらハンズオンまではいれませんでしたが、前半のSageMakerの解説を聞 …
-
-
「機械学習名古屋・JAWS-UG名古屋共催 Amazon SageMaker オンラインハンズオン〜ハイパーパラメータ最適化とMNIST学習〜」に参加しました
17:40に自宅から徒歩30分の会社の配信スタジオ的なところを出て、歩きながらC …
-
-
「JAWS-UG 名古屋 DR対策特集+LT」で発表しました
2021/3/29の「JAWS-UG 名古屋 DR対策特集+LT」で「ブログを大 …
-
-
AWS Summit 2016 Tokyoに参加してきました (Day3)
飛天3日目です。 JAWS-UGブースのすぐ前にあったこのお水がめちゃめちゃおい …
-
-
Developers Summit 2024「LLMを活用してオンライン薬局のオペレーションを自動化した話」を見ました
PharmaX株式会社 エンジニアリング責任者 上野 彰大さん オンライン薬局、 …
-
-
「関ジャバ Java開発のためのDocker & てらださんせきらら in MS関西」に行ってきました
「関ジャバ Java開発のためのDocker & てらださんせきらら i …
-
-
Developers Summit 2018 「夢は正夢〜「野球エンジニア」になるまでの歩み」を聞きました
以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …
-
-
ヤマムギvol.25 EC2にWordPressをインストールするデモをしました
今日はAWSではじめるLinux入門ガイドの17章に書いている「LinuxにWo …
