如何编写一个接受int并返回一个数组的方法?

时间:2017-11-09 17:33:44

标签: java arrays

我需要编写一个eMinus方法,但是我遇到了很多错误。贝娄是我的代码。我非常感谢一些建议。

编写一个方法eMinus,它接受一个int索引作为参数并返回一个Employee数组。返回的数组应该是一个小于e的元素,并且索引索引处没有元素。否则,返回数组中的元素应保持与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 

        }

2 个答案:

答案 0 :(得分:0)

eMinus看起来应该几乎可以工作,除了你创建并返回一个整数数组(称为Employee3)而不是Employee2s数组。

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;
}

您使用的名称表明您可能对类型,数组和变量感到有些困惑。尝试阅读区别是什么,以及您是否需要拥有Employee,Employee2和Employee3(答案很可能是否)。

答案 1 :(得分: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;
}