質問: new Bucho(); } shain.standup(); } } ``` Shain.java ``` public interface Shain{ public void standup(); } ``` Tanto.java ``` public class Tanto implements Shain{ public void standup(){ System.out.println("担当が普通に起立しました。"); } } ``` Shunin.java ``` public class Shunin implements Shain{ public void standup(){ System.out.println("主任がすばやく立ちました。"); } } ``` Bucho.java ``` public class Bucho implements Shain{ public void standup(){ System.out.println("部長がだるどうに立ちました。"); } } ```
回答: クラス名を直したあとのプログラムでArrayIndexOutOfBoundsExceptionが出たのは、このコマンドライン引数が入っていない、すなわちargsが長さ0の配列になっている所に、argsの0番という存在しないものを参照したことによるものです。 mainメソッドの引数`String] args`は**コマンドライン引数**と呼ばれるものです。 自分のPCでJavaプログラムを実行する際、Windowsならコマンドプロンプトに"java (クラス名)"を打ち込んで実行するわけですが、この(クラス名)のあとに文字を打ち込むと、それが半角スペース区切りでStringの配列となり、mainメソッドに渡されます。 しかしこの環境ではコマンドライン引数を受け取って実行する仕組みにはなっていないようです。その代わり ![paiza.io画面 この画面下、丸で囲った部分に文字を入力するためのスペースが存在します。これは**標準入力**で、`System.in`から文字列などを取ることができます。ちょうど画像に出ているような`new BufferedReader(new InputStreamReader(System.in));`のようにして取得する準備ができます。argsを使う代わりにこれを使うべきではないでしょうか。