問題
次のコードをコンパイル、実行するとどうなりますか。
public class Main {
public static void main(String... args) {
Number[] n = { 1, 2, 3, 4 };
Integer[] i = { 1, 2, 3, 4 };
Long[] l = { 1L, 2L, 3L, 4L };
Double[] d = { 1.0, 2.0, 3.0, 4.0 };
System.out.println(MyClass.sumAsIntegral(n) + ","
+ MyClass.sumAsIntegral(i) + ","
+ MyClass.sumAsIntegral(l) + ","
+ MyClass.sumAsIntegral(d));
}
}
class MyClass {
public static Number sumAsIntegral(Number[] list) {
long sum = 0L;
for (Number n : list) {
sum = sum + n.longValue();
return sum;
}
}
}
選択肢
A)10,0,0,0 が出力される
B)NullPointerException がスローされる
C)10,10,10,10 が出力される
D)10,10,10,0 が出力される
E)NumberFormatException がスローされる
F)コンパイルエラーになる
G)10,0,0,0 が出力される
解答
A)10,0,0,0 が出力される
B)NullPointerException がスローされる
C)10,10,10,10 が出力される
D)10,10,10,0 が出力される
E)NumberFormatException がスローされる
F)コンパイルエラーになる
G)10,0,0,0 が出力される
解説
public class Main {
public static void main(String... args) {
Number[] n = { 1, 2, 3, 4 };
Integer[] i = { 1, 2, 3, 4 };
Long[] l = { 1L, 2L, 3L, 4L };
Double[] d = { 1.0, 2.0, 3.0, 4.0 };
System.out.println(MyClass.sumAsIntegral(n) + ","
+ MyClass.sumAsIntegral(i) + ","
+ MyClass.sumAsIntegral(l) + ","
+ MyClass.sumAsIntegral(d));
}
}
class MyClass {
public static Number sumAsIntegral(Number[] list) { //このメソッドはNumber型で戻す必要がありますが、Mainクラスに定義された配列はNumber型でないためコンパイルエラーとなります。
long sum = 0L;
for (Number n : list) {
sum = sum + n.longValue();
return sum;
}
}
}
対象資格:Java SE17 認定資格