Tips

Java Silver 練習問題7

Java Silver 練習問題7

Java Silverに関する問題を出題していきます!

■問題1

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

public class Sample {
    public static void main(String[] args) {
        for(String str = ""; str.length() < 10; str += "aaa") {
            System.out.println("こんにちは");
        }
    }
}
  1. 「こんにちは」と2回表示
  2. 「こんにちは」と3回表示
  3. 「こんにちは」と4回表示
  4. コンパイルエラー
  5. その他
解答はここをクリック!

【解答3】

解説
for文の変数がStringでも問題ありません。
繰り返されるごとに「aaa」の3文字ずつが文字列結合で足されていきます。
すると、「0文字」、「3文字」、「6文字」、「9文字」の計4回繰り返されるので答えは3となります。

 

 

■問題2

次のプログラムをコンパイル、実行した結果として正しいものはどれか。


public class Sample {
    public static void main(String[] args) {
        for(StringBuilder sb = new StringBuilder(); sb.length() <= 10; sb.append("aaa")) {
            System.out.println("こんにちは");
        }
    }
}
  1. 「こんにちは」と2回表示
  2. 「こんにちは」と3回表示
  3. 「こんにちは」と4回表示
  4. コンパイルエラー
  5. その他
解答はここをクリック!

【解答:3】

StringBuilderを使っても、インスタンス化しても変数宣言としては何も問題ありません。
継続処理でappendしているので、問題1と同様”aaa”が文字列結合されていきます。
条件式は問題1とは異なり「<=」となっていますが、5回目でfalseが返ることには変わりありません。
したがって、答えは問題1と同様、3となります。

 

 

 

■問題3

次のプログラムをコンパイル、実行した結果として正しいものはどれか。


public class Sample {
    public static void main(String[] args) {
        for(int i = 0; i < 3; inc(i)) {
            System.out.println("こんにちは");
        }
    }

    static void inc(int i) {
        i++;
    }
}

 

  1. 「こんにちは」と2回表示
  2. 「こんにちは」と3回表示
  3. 「こんにちは」と4回表示
  4. コンパイルエラー
  5. その他
解答はここをクリック!

【解答:5】

この場合「こんにちは」の出力が無限ループしてしまいます。
継続処理でメソッドを呼び出すことは問題ありません。
しかしfor文内で定義された変数iと、incメソッドの変数iは別物です。
したがっていくらincメソッドで1加算してもfor文内のiは0のままで、無限ループになってしまいます。

 

 

 

■問題4

次のプログラムをコンパイル、実行した結果として正しいものはどれか。


public class Sample {
    static int i = 0;
    public static void main(String[] args) {
        for(; i < 3; inc(i)) {
            System.out.println("こんにちは");
        }
    }

    static void inc(int i) {
        i++;
    }
}

 

  1. 「こんにちは」と2回表示
  2. 「こんにちは」と3回表示
  3. 「こんにちは」と4回表示
  4. コンパイルエラー
  5. その他
解答はここをクリック!

【解答:5】

これまた無限ループになります。
理由も同じです。
incメソッドで1加算しているのは、引数で定義された変数iになります。
したがって、static変数iは0のままで無限ループになってしまいます。

 

 

 

■問題5

次のプログラムをコンパイル、実行した結果として正しいものはどれか。


public class Sample {
    static int i = 0;
    public static void main(String[] args) {
        for(; i < 3; inc()) {
            System.out.println("こんにちは");
        }
    }

    static void inc() {
        i++;
     }
}
  1. 「こんにちは」と2回表示
  2. 「こんにちは」と3回表示
  3. 「こんにちは」と4回表示
  4. コンパイルエラー
  5. その他
解答はここをクリック!

【解答:2】

今度こそ無限ループにはなりません。
incメソッドでインクリメントしているiも、for文の条件式で使われているiも、同じものです。

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search