後期から1年生のJavaプログラミング(演習科目)を一部担当しています。本日は配列について演習しました。そこで以下のような問題を出題しました。あまりにも基本的な問いだったのか、答えに窮する学生がたくさんいました。
以下のプログラムを入力して実行し学生数に「-1」を入力するとエラーがでるが、なぜエラーがでるか原因を説明しなさい。
import java.io.*;
public class Ex1 {
public static void main(String args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("学生数を入力してください");
String str = br.readLine();
int num = Integer.parseInt(str);
int ten = new int [num];
//(省略)
}
}
答えは以下。
学生の答えは「−1の箱はつくれないから」が多く、ちゃんと講義を聞いていた学生は「配列の要素数は0以上だから」と答えました。
この答えを見てふと「?」と思ったわけです。プログラミングの現場から離れるとこんなものですね。。。配列要素数が0の配列って何で存在するんだ?と。
調べてわかりました→http://www.atmarkit.co.jp/fdotnet/dotnettips/261arrayinit/arrayinit.html
そういえば昔、C++でクラスライブラリを作っていたときに使った記憶があります。処理結果(数)が0となったときに、配列要素数0の配列インスタンスを生成してリターンする場面があるのですね。例えば以下のようなプログラムです。学生君に考えてくるように伝えましたが。。。やってくる人いるかなぁ?
public class Ex1 {
public static void main(String args) {
int a = getData();
for (int i=0;i