memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

要素0の配列の用途

後期から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