Tips

Java Silver 練習問題16

Java Silver 練習問題16

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

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

[java] public class Sample {
public static void main(String[] args) {
plus(1, 2);
}

static int plus(int x, int y) {
return x + y;
}
}
[/java]

  1. 「1, 2」と表示
  2. 「3」と表示
  3. 何も表示されない
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 3:何も表示されない】
6行目でplusメソッドを定義しています。
このメソッドを3行目で呼び出していますが、出力の処理はありませんので何も表示されません。

 

問題2

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

[java] public class Sample {
public static void main(String[] args) {
System.out.println(getSum(3, 1));
}

static int getSum(int start, int end) {
int sum = 0;
for(int i = start; i <= end; i++) {
sum += i;
}
return sum;
}
}
[/java]

  1. 「0」と表示
  2. 「4」と表示
  3. 何も表示されない
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 1:「0」と表示】
第一引数から第二引数までの数を全て足すメソッドです。
しかし、第一引数が第二引数より大きい数のため、for文内の処理が実行されません。
したがって戻り値であるsumは0のままです。

 

問題3

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

[java] public class Sample {
public static void main(String[] args) {
outputMsg("Hello!!");
}

static String outputMsg(String msg) {
System.out.println(msg);
}
}
[/java]

  1. 「Hello」と表示
  2. 「msg」と表示
  3. 何も表示されない
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 4:コンパイルエラー】
outputMsgメソッドの戻り値の型はString型になっていますが、return文の記述がありません。
戻り値の型が定義されている場合、戻り値がない、または定義と異なる型をreturnしているとコンパイルエラーになります。

 

問題4

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

[java] public class Sample {
public static void main(String[] args) {
String msg = "Hello!!";
translation(msg);
System.out.println(msg);
}

static void translation(String msg) {
msg = "こんにちは";
}
}
[/java]

  1. 「Hello!!」と表示
  2. 「こんにちは」と表示
  3. 何も表示されない
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 1:「Hello!!」と表示】
4行目でtranslationメソッドを呼び出しmsgを「こんにちは」にしているようにみえますが、結果は「Hello!!」と表示されます。
ポイントは変数のスコープです。
mainメソッド内の「msg」とtranslationメソッド内のmsgは別ものです。
5行目で出力しようとしているmsgはmainメソッド内のmsgを指すので「Hello!!」と表示されます。

 

問題5

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

[java] public class Sample {
public static void main(String[] args) {
System.out.println(higher(10, 20));
}

static String higher(int x, int y) {
if(x == y) {
return "同じ値です";
} else if(x > y) {
return x + "の方が大きいです";
} else if(x < y) {
return y + "の方が大きいです";
}
}
}
[/java]

  1. 「10の方が大きいです」と表示
  2. 「20の方が大きいです」と表示
  3. 何も表示されない
  4. コンパイルエラー
  5. 実行時エラー
解答はここをクリック!

【解答 4:コンパイルエラー】
higherメソッドではreturnをif文で分岐しています。
しかしelse ifで分岐しているため、「全てに当てはまらない」という可能性が原理的に存在します。
つまりはreturnが実行されない可能性があるわけですね。
今回の条件だと必ずreturnは実行されますが、条件は関係なくコンパイルエラーとなります。


前回の問題  次の問題

 

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

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search