BLOG

【プログラマー 研修 Java】 あおの記録9



こんにちは、あおです\(^0^)/





今日は皆さんに色々と報告しなくてはいけないことがあります…。


まず嬉しい報告からします!













今日Javaの総復習テストを実施しました。80問以上あったのですが…。





 テスト1・・・43点中39点 (^0^)/
 テスト2・・・18点中15点  (^0^)/
 テスト3・・・20点中7点  (・・; )





もっと点数が悪いかと思ったのですが、理解しているところはしっかり理解出来ているんだなと思いました。


単元ごとに区切られたテストだったので、自分がどの分野を苦手としているかが明確にわかる点数です(汗)。


満足できる点ではないですが、今まで頑張った結果が出たのかなとは思える点数です。


苦手な分野をしっかり復習し、今後に活かしたいと思います。



























そして悲しい報告です…。































知っている人もいると思いますが、もうすぐ私がこのブログを更新することはなくなります…。



現場に出てしまうので…。














こんなにも早く皆様とお別れすることになるなんて(><)



あと何回ブログを書くことができるのでしょうか…。


バタバタする可能性があるので未定ですが、なるべく更新できる日は更新したいと思います!







ではいつも通り、研修内容を書いていきます。



◆本日の内容

 今日はJavaのテストを実施しました。問題文が多量のため、割愛しますが一部印象に残った問題を紹介いたします。

◆所感

 テスト1、テスト2、テスト3の中から1つずつピックアップして紹介したいと思います。



~テスト1 switch文~

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public class Q3 {
public static void main(String[] args) {
String s = "music";
switch(s) {
case "music":
System.out.print("b");
case "music_player":
System.out.print("c");
default:
System.out.print("a");
break;
}
}
}
public class Q3 { public static void main(String[] args) { String s = "music"; switch(s) { case "music": System.out.print("b"); case "music_player": System.out.print("c"); default: System.out.print("a"); break; } } }
public class Q3 {
        public static void main(String[] args) {
                String s = "music";
                switch(s) {
                case "music":
                        System.out.print("b");
                case "music_player":
                        System.out.print("c");
                default:
                        System.out.print("a");
                        break;
                }
        }
}



 この問題見たとき、「懐かしいな~」と思いました。分岐は if文 を使うことが多いので…。

break; がないとどんどん次に行っちゃうんですよね…。今回 case “music”が当てはまるので

“b”が表示されます。break; があれば抜けるのですが、ないので次のcaseも実行します。

“c”が表示されます。ここも break; があれば抜けるのですが、ないので次のcaseも実行します。

defaultなのですが実行しちゃいます。 “c”が表示されます。 ここでようやく break;により抜けます。

そのため今回コンパイルした結果は bca という文字列が出力されます。


~テスト2 クラス~


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public class Q2 {
public static void main(String[] args) {
Q2_Number nb = new Q2_Number(20/10);
nb.setNumber(200 % 50);
System.out.println(nb.getNumber());
}
}
class Q2_Number {
int number;
public Q2_Number(int num) {
this.number = num;
}
public void setNumber(int num) {
this.number = num;
}
public int getNumber() {
return this.number;
}
}
public class Q2 { public static void main(String[] args) { Q2_Number nb = new Q2_Number(20/10); nb.setNumber(200 % 50); System.out.println(nb.getNumber()); } } class Q2_Number { int number; public Q2_Number(int num) { this.number = num; } public void setNumber(int num) { this.number = num; } public int getNumber() { return this.number; } }
public class Q2 {
        public static void main(String[] args) {
                Q2_Number nb = new Q2_Number(20/10);
                nb.setNumber(200 % 50);
                System.out.println(nb.getNumber());
        }
}
class Q2_Number {
        int number;
        public Q2_Number(int num) {
                this.number = num;
        }
        public void setNumber(int num) {
                this.number = num;
        }
        public int getNumber() {
                return this.number;
        }
}


 私はハッカソンを通じて、getter と setter のすごさを知りました(笑)。この問題を見たとき

「ハッカソンのゲーム制作に参加して本当によかった~」と思いました。まずインスタンス化していて

コンストラクタもあり…。今回の問題では引っかけとして引数を渡した後、nb.setNumberにて

値を変更していました。こういう引っかけがすごく惑わしてきます。小さなミスが大きなミスに

つながるので、丁寧に読み解けるよう力をもっともっとつけたいと思います。

今回コンパイルした結果は 200%50 の 0 が出力されます。


~テスト3 継承したクラス~


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public class Q12 {
public static void main(String[] args) {
Q12_B b = new Q12_B();
b.method();
}
}
class Q12_A {
int n;
Q12_A() {
System.out.print("E");
}
Q12_A(int n) {
this.n = n;
System.out.print("A");
}
void print() {
System.out.print("D");
}
}
class Q12_B extends Q12_A {
int a;
Q12_B() {
super(20);
System.out.print("C");
}
void method() {
System.out.print("B");
super.print();
}
}
public class Q12 { public static void main(String[] args) { Q12_B b = new Q12_B(); b.method(); } } class Q12_A { int n; Q12_A() { System.out.print("E"); } Q12_A(int n) { this.n = n; System.out.print("A"); } void print() { System.out.print("D"); } } class Q12_B extends Q12_A { int a; Q12_B() { super(20); System.out.print("C"); } void method() { System.out.print("B"); super.print(); } }
public class Q12 {
        public static void main(String[] args) {
                Q12_B b = new Q12_B();
                b.method();
        }
}
class Q12_A {
        int n;
        Q12_A() {
                System.out.print("E");
        }
        Q12_A(int n) {
                this.n = n;
                System.out.print("A");
        }
        void print() {
                System.out.print("D");
        }
}
class Q12_B extends Q12_A {
        int a;
        Q12_B() {
                super(20);
                System.out.print("C");
        }
        void method() {
                System.out.print("B");
                super.print();
        }
}

 


 今回自分の非常にまずい欠点を見つけました。それはインスタンス化した後、引数がなければ

コンストラクタの内容をそんなに確認しない癖があるみたいです。今回の場合だとQ12_B()の

コンストラクタを完全に見落としていたため、自分はBとDが出力されると思っていました。

この癖を直すよう、今後は意識したいと思います。


 まず、 Q12_B クラスのコンストラクタの中身の処理をします。その後必要なメソッドを呼び出します。


今回コンパイルした結果はACBDという順番で出力されます。



◆一言

 テストとハッカソンを通じて、よりJavaの理解力を深めれたのではないかと思っています。

まだまだ足りないところはたくさんあるので、今後もしっかりと学習していきます!




では皆さん、次回のブログまでさようなら(*’ω’*)


BLOGトップへ戻る