プログラミング初心者の奮闘記

プログラミング初心者の成長と過程。

Java Silver 第2章

解答と理由

  1. A

do {} while()文では一度do {} 内の処理を実行してからwhile()内の条件式を実行するため

  1. D

int型で扱える桁数をオーバーしているため

  1. B,C,D,E,G

  2. A

char型で扱える変数は1文字の文字列のため

  1. C.D

  2. B

  3. C

8.E

変数aに最後に入れた変数はcのため 9. A,B

10, E

helloメソッドの引数でstrは指定していないため

11, E

配列は0からのため

12, D

インデックス番号表示のため

13, B

インデックス番号2から4の表示のため

14, B

15, C

素数表示のため

16, E

17, D

18, C

数字+文字列は文字列になるため

  1. D

String str = "null";のため

  1. B

  2. B

  3. B

インデックス番号は0から始まるため

解答2回目

  1. C

boolというデータ型はjavaにはないため

  1. E

  2. C,D,E,F,I

変数の最初や最後、アルファベットの前後にはアンダーバーを入れることができないため 4. C

char型は’一文字’;のためA,Bはない。nullはいれることができない?のでC

  1. D,E

変数名に.や{}は入れられないため

  1. E

varは右辺値から自動的にデータ型を決める型推論のためA,C,Dはない。Bのnullは入れられない?ため

7. C

  1. C

  2. A,D

Stringオブジェクト作成はString 変数名 = new Stringの形なのでA

  1. A

hello(str);はメソッドであり、出力されるのはString str = "hoge,world.";のため

  1. F

String str = "abcde"; のインデックス番号は4までであり、5というのは存在しないため

  1. E

indexOFメソッドは、引数で指定された文字がどこの位置にあるか、示すもので存在しないときは-1を返す

  1. D

aの前をインデックス番号0とし、substring();に範囲を指定するため、この場合はD

  1. C

replace()により、str = "aaaa"; のなかの"aa"を"b"に変えているため

  1. C

  2. A

substring(1,3).の範囲でbcとなり、startsWith("b")なので、substringの範囲の初めの文字が"b"であるかという問いのため

17, A

String型の文字の連結には.contactを使うため

  1. C

数字+文字列は文字列になるため

  1. B

String str = null;でstrにnullを入れ、str += "null";はstr = str + "null";なので

  1. C

  2. D

replace();内でインデックス番号1と3の文字をaに変えているため

  1. D

正解

  1. C

  2. E

  3. C,D,E,F,I

  4. C

  5. D,E

  6. E

  7. C

  8. A

  9. A,B

  10. A

  11. F

  12. E

  13. D

  14. C

  15. F

  16. A

  17. A

  18. C

  19. B

  20. D

  21. D

  22. A

Java Silver 第1章

解答と理由

  1. A,D,E

  2. C

  3. A,C

  4. C

メインメソッド外で変数の宣言をしているため

  1. A,B,E

エントリーポイントの多くはmain()メソッドのため

  1. D,

配列の引数を指定していないため

7, A,D

クラスを実行するにはjavacクラス名.javaのため

8,C

.lengthは要素数の出力のため a/"/a"/a/b/cの6つ

解答2回目

  1. A,C,D

パッケージはクラスをグループにまとめるものであるため

  1. B

パッケージの宣言はimportよりも前に記述するため

  1. A,C

java.langパッケージに属するすべてのクラスに適用されるため

  1. C

パッケージが異なるためコンパイルエラーになる

  1. A,B,E

mein()メソッド参照

例  public static void main(String args[]) {}

  1. B

java クラス名 配列引数のため

  1. B,C

SE11ではjavacのcを省略して記述するため

  1. B

a/"/a"/ab/cの5つ

正解

  1. A,C,D

  2. B

  3. A,C

  4. C

  5. A,B,E

  6. B

  7. B,C

  8. B

メソッド2

ポイント

  • メソッドを使ってif文2を簡略化かつ、分かりやすいプログラミングができているか

問題

java-musashiurawa.hatenablog.com

解答

import java.util.Scanner;

public class method2 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        Scanner scan = new Scanner(System.in);

        int place;         //場所をScannerクラスで指定する
        int time;          //時間をScannerクラスで指定する
        boolean flg;       //判定するのに使ってください

        System.out.println("世界の時刻を表示します。");
        System.out.println("香港の時刻を表示したい場合は、\"1\"を入力してください。");
        System.out.println("ベルリンの時刻を表示したい場合は、\"2\"を入力してください。");
        System.out.println("イスタンブールの時刻を表示したい場合は、\"3\"を入力してください。");
        System.out.print("表示したい場所の数字を入力してください:");  //数字を入力する
        place = scan.nextInt();

        while(place < 1 || place >= 4 ) {
            System.out.println("数字が誤っています。1~3の数字を入力してください:");
            place = scan.nextInt();
        }
            System.out.print("日本時間を0~23で入力してください:");       //数字を入力する
            time = scan.nextInt();
        while(time < 0 || time >= 24) {
            System.out.println("数字が誤っています。0~23の数字を入力してください:");
            time = scan.nextInt();
        }
    
        if(place == 1) {
            jisa("香港",1,time);
        }
        if(place == 2) {
            jisa("ベルリン",8,time);
        }
        if(place == 3) {
            jisa("イスタンブール",6,time);
        }
    }


    private static void jisa(String kuni2,int jisa_time,int time) {
        System.out.println("日本と" + kuni2 + "の時差は" + jisa_time + "時間です。");
        if((time - jisa_time) > 0) {
            System.out.println("日本の時刻は" + time + "時です。" + kuni2 + "の時刻は" + (time - jisa_time) + "です。");
        }else {
            System.out.println("日本の時刻は" + time + "時です。" + kuni2 + "の時刻は、前日の" + (24 + (time - jisa_time)) + "時です。");
        }
    }

}

for文4

ポイント:

  • 文字列の長さの取得ができるか

問題

java-musashiurawa.hatenablog.com

解答

public class forbunn4 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ


    String str = "あ0い1う2え3お4か5き6く7け8こ9";

    for(int i = 0; i < str.length(); i++) {
        if(i % 2 != 0) {
            char j = str.charAt(i);
            System.out.print(j);
        }
    }

    }

}

正解

public class forbunn4 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ


    String str = "あ0い1う2え3お4か5き6く7け8こ9";

    for(int i = 0; i < str.length(); i++) {
        if(i % 2 != 0) {
            char j = str.charAt(i);
            System.out.print(j);
        }
    }

    }

}

配列3

ポイント:

  • 短く、分かりやすいプログラミングになっているか

  • 適切な構文、変数を使えているか

問題

java-musashiurawa.hatenablog.com

解答

public class hairetu3 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        int score[][] = {
                {67,78,90,56,84},          //Aクラスの点数
                {48,89,54,91},              //Bクラスの点数
                {77,56,100,58,67,69}      //Cクラスの点数
        };
        int sum;
        for(int i = 0; i < score.length; i++) {
            sum = 0;
            char tennsuu[] = {'A','B','C',};
                System.out.println(tennsuu[i] + "クラスのテスト結果:");

            for(int j = 0; j < score[i].length; j++) {
                System.out.println(score[i][j] + "点");
                sum += score[i][j];
            }
            System.out.println(score[i].length + "人の平均点は" + (sum / score[i].length) +"点です。");
            System.out.println();
        }

    }

}

正解

public class hairetu3 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        int score[][] = {
                {67,78,90,56,84},          //Aクラスの点数
                {48,89,54,91},              //Bクラスの点数
                {77,56,100,58,67,69}      //Cクラスの点数
        };
        int sum;
        for(int i = 0; i < score.length; i++) {
            sum = 0;
            char class_name[] = {'A','B','C',};
                System.out.println(class_name[i] + "クラスのテスト結果:");

            for(int j = 0; j < score[i].length; j++) {
                System.out.println(score[i][j] + "点");
                sum += score[i][j];
            }
            System.out.println(score[i].length + "人の平均点は" + (sum / score[i].length) +"点です。");
            System.out.println();
        }

    }

}

配列2

ポイント:

  • 多次元配列を理解しているか

  • switch文を使用し、プログラムしているか

  • 変数sumを上手く使用しているか

問題

java-musashiurawa.hatenablog.com

解答

public class hairetu2 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        int score[][] = {
                {67,78,90,56,84},          //Aクラスの点数
                {48,89,54,91},              //Bクラスの点数
                {77,56,100,58,67,69}      //Cクラスの点数
        };
        int sum;
        for(int i = 0; i < score.length; i++) {
            sum = 0;
            if(i == 0) {
            System.out.println("Aクラスのテスト結果:");
                }else if(i == 1) {
            System.out.println("Bクラスのテスト結果:");
                }else if(i == 2) {
            System.out.println("Cクラスのテスト結果:");
                }
            System.out.println(score[i][0] + "点");
             sum +=score[i][0];
            System.out.println(score[i][1] + "点");
             sum +=score[i][1];
            System.out.println(score[i][2] + "点");
             sum +=score[i][2];
            System.out.println(score[i][3] + "点");
             sum +=score[i][3];
        switch(i) {
                case 0:
                    System.out.println(score[i][4] + "点");
                    sum +=score[i][4];
                    break;
                case 2:
                    System.out.println(score[i][4] + "点");
                    sum +=score[i][4];
                    System.out.println(score[i][5] + "点");
                    sum +=score[i][5];
                    break;
        }
            System.out.println(score[i].length + "人の平均点は" + (sum / score[i].length ) + "点です。");
            System.out.println();
        }
    }
}

正解

public class hairetu2 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        int score[][] = {
                {67,78,90,56,84},          //Aクラスの点数
                {48,89,54,91},              //Bクラスの点数
                {77,56,100,58,67,69}      //Cクラスの点数
        };
        int sum;

        for(int i = 0; i < score.length; i++) {
            sum = 0;
            switch(i) {
                case 0:
                    System.out.println("Aクラスのテスト結果:");
                    break;
                case 1:
                    System.out.println("Bクラスのテスト結果:");
                    break;
                case 2:
                    System.out.println("Cクラスのテスト結果:");
                    break;
            }
            for(int j = 0; j < score[i].length; j++) {
                System.out.println(score[i][j] + "点");
                sum += score[i][j];
            }
            System.out.println(score[i].length + "人の平均点は" + (sum / score[i].length ) + "点です。");
            System.out.println();
        }
    }
}

if 文 2

ポイント:

  • if文を理解しているか

  • boolean型の使い方を理解しているか

  • Scannerクラスの使い方を理解しているか

  • 自分で考えながらプログラムを組むことができるか

問題

java-musashiurawa.hatenablog.com

解答

import java.util.Scanner;
public class ifbunn2 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        Scanner scan = new Scanner(System.in);

        int place;         //場所をScannerクラスで指定する
        int time;          //時間をScannerクラスで指定する
        boolean flg;       //判定するのに使ってください

        System.out.println("世界の時刻を表示します");
        System.out.println("香港の時刻を表示したい場合は、\"1\"を入力してください。");
        System.out.println("ベルリンの時刻を表示したい場合は\"2\"を入力してください。");
        System.out.println("イスタンブールの時刻を表示したい場合は、\"3\"を入力してください");
        System.out.print("表示したい場所の数字を入力してください:");        //数字を入力する。


        place = scan.nextInt();



        while(place < 1 || place >= 4) {
            System.out.println("数字が誤っています。1~3の数字を入力してください:");
            place = scan.nextInt();
        }
//     System.out.println(place);


        System.out.print("日本時間を0~23で入力してください:");       //数字を入力する。

        time = scan.nextInt();
        while (0 > time ||time >= 23) {
            System.out.println("数字が誤っています。0~23の数字を入力してください:");
            time = scan.nextInt();
        }
//         System.out.println(time);


/*     if(place == 1) {
           System.out.print("");
       } else if (place == 2) {
           System.out.print("");
       } else if (place == 3) {
           System.out.print("");
       }
*/


        if(place == 1) {
            System.out.println("日本と香港の時差は1時間です。");
            System.out.print("日本の時刻は" + time + "時です。香港の時刻は");
            if (flg = time - 1 < 0) {
                System.out.print("前日の" + (24+(time - 1)) + "時です。");
            }else {
                System.out.print((time - 1) + "時です。");
            }
        }else if (place == 2) {
            System.out.println("日本とベルリンの時差は8時間です。");
            System.out.print("日本の時刻は" + time + "時です。ベルリンの時刻は");
            if (flg = time - 8 < 0) {
                System.out.print("前日の" + (24+(time - 8)) + "時です。");
            }else {
                System.out.print((time - 8) + "時です。");
            }
        } else if (place == 3) {
            System.out.println("日本とイスタンブールの時差は6時間です。");
            System.out.print("日本の時刻は" + time + "時です。イスタンブールの時刻は");
            if (flg = time - 6 < 0) {
                System.out.print("前日の" + (24+(time - 6)) + "時です。");
            }else {
                System.out.print((time - 6) + "時です。");
            }

        }
    }
}