質問: myarray.Insertion(arr,index,InValue); System.out.print("Array items after Insertion "+Arrays.toString(arr)); } ### 試したこと Insertionメソッドのループの部分に修正が必要なのはわかりますが 様々な方法を試してみても分かりません。
回答: 動作確認済みです。 ``` public class ArrayInEx { private int index,InValue; public ArrayInEx(){} public int [] Insertion(int[] arr,int index,int InValue) { if (index == 0|| index >= arr.length) { throw new NumberFormatException ("\nEroor - Index number is Wrong.Check again!!!"); } int[] NewArray = new int[arr.length + 1]; //新配列は元の配列の長さ + 1 boolean check = false; //要素に入力値を代入したかどうかのチェック for (int i=0; i < arr.length + 1; i++) { if (check) { //既に入力値を新配列に代入済みの場合 NewArray[i] = arr[i - 1]; //indexを考えながら代入 } else { //まだ代入されてない場合 if (i == index) { //新配列のindexが入力したindexと同じになった場合 NewArray[i] = InValue; //入力値を代入 check = true; //フラグをONにする } else { //まだ入力値のindexと同じでない場合 NewArray[i] = arr[i]; //何も考えず代入 } } } return NewArray; } } ``` 超簡単にやるために要素に値を代入したかどうかのチェックを入れました。 (あまりチェックを多用するのはおすすめされてませんが・・・。) よく考えなければいけないのは代入した後のindexの処理ですね。 恐らくここで躓いていたのではないでしょうか。 それ以前でしたら、残念ながらfor文と配列を1から勉強してくださいとしか言えません。 質問者さんにお願いですが、『コピーしてはい!できた~おわり!』ではなく、 System.out.println()などを駆使してどんな動きになっているかきちんと理解してください。