2017-11-09 19 views
-1

メソッドeMinusを記述する必要がありますが、多くのエラーが発生しています。ベローが私のコードです。私はいくつかのアドバイスを大変感謝しています。intを受け取り、配列を返すメソッドを書く方法は?

パラメータとしてintインデックスを受け入れ、Employee配列を返すメソッドeMinusを作成します。返される配列は、eより小さい1つの要素でなければならず、インデックスインデックスに要素がありません。返される配列内の要素は、eと同じ順序を維持する必要があります。インデックスインデックスの要素を削除するには、次のようにします。e = eMinus(index);

 import java.util.Scanner; 
     import java.util.ArrayList; 
     public class Controller2 { 

    //Data Members 
     Employee2 [] e = new Employee2 [0]; 
     int counter = 0; //int variable = counter 
     Scanner scanner = new Scanner(System.in); 

     //Method eMinus 
     int[] eMinus (int index, Employee2 [] e) { 
      int [] Employee3 = new int [e.length - 1 ]; 
      for (int loop = 0 ; loop < index; loop++) 
       Employee3[loop] = e[loop]; 
      for (int loop = index + 1; loop < e.length; loop++) 
       Employee3[loop-1]=Employee2[loop]; 
      return Employee3;//employee array 

     } 

答えて

0

eMinusそれはほとんどあなたの代わりにEmployee2sの配列の(Employee3と呼ばれる)整数の配列を作成し、返却している以外、動作するはずのように見えます。..

Employee2[] eMinus(int index, Employee2[] input) { 
    Employee2[] result = new Employee2[input.length - 1]; 
    for (int i = 0 ; i < index; i++) 
     result[i] = input[i]; 
    for (int i = index + 1; i < input.length; i++) 
     result[i - 1] = input[i]; 
    return result; 
} 

あなたが使用されている名前は示唆配列、変数についていくらか混乱するかもしれません。違いが何であるか、従業員、従業員2、従業員3が必要かどうかについて読んでみてください(答えは「いいえ」と思われます)。

+0

ありがとうございました。 –

+0

はい、私は必要としませんでしたし、従業員または従業員。 –

0

インデックスインデックスで要素を削除するには、次のようにします。e = eMinus(index);

これは、配列をeMinusメソッドに渡すのではなく、インスタンス変数?を扱うことを意味します。

あなたがそれを修正していることが分かっていれば(私の場合はもっと適切なデータ構造があります)、配列を使う理由はわかりません。

Employee2[] empls = new Employee2 [0]; // btw, why are you creating an empty array here? 

Employee2[] eMinus(int index) throws Exception { 
    if (empls == null) { 
     // return an empty array or some valid exception 
     // or whatever you want to deal with this situation 
    } 
    if (index < 0 || index > empls.length-1) { 
     // return an empty array or some valid exception 
     // or whatever you want to deal with this situation 
    } 

    Employee2[] result = new Employee2[empls.length - 1]; 
    int c = 0; 
    for (int i = 0; i < empls.length; i++) { 
     if (i != index) { 
      result[c++] = empls[i]; 
     } 
    } 

    return new result; 
} 
関連する問題