如何将二维数组的值分配给一维数组?

时间:2021-07-22 01:54:42

标签: java arrays for-loop

我制作了 2 个一维数组,并且想要对二维数组的值进行排序,以便它们可以在一维数组之间进行划分。

就上下文而言,我正在制作一个程序,该程序利用用户输入创建一个二维数组来组织受薪和计时员工。

用户输入他们想要存储在employeeDatabase 中的雇员人数。然后他们输入 ID 号(employeeList),最后输入每个员工是受薪还是按小时(1 或 2),然后将这些数据存储到二维数组中。

举个例子,这里有一个示例员工数据库。

<头>
员工 ID 薪水 (1) 或时薪 (2)
123456 1
654321 2

我希望它输出: 员工 123456 是受薪员工。 员工 654321 是小时工。

我想将employeeDatabase 中的值分成salaryedEmployees 和hourlyEmployees 数组,但我一直收到“ArrayIndexOutOfBoundsException: 0”数组。导致问题的代码片段如下。谢谢!

      int salariedEmployeesSize = 0;
      int hourlyEmployeesSize = 0;
      
      int[] salariedEmployees = new int[salariedEmployeesSize];
      int[] hourlyEmployees = new int[hourlyEmployeesSize];
      
      for (int i = 0; i < employeeList.length - 1; i++) {
         if (employeeDatabase[i][1] == 1) {
            salariedEmployeesSize += 1;
            salariedEmployees[i] = employeeDatabase[i][0];
            
         } else if (employeeDatabase[i][1] == 2) {
            hourlyEmployeesSize += 1;
            hourlyEmployees[i] = employeeDatabase[i][0];
           
         }
      }


      for (int i = 0; i < salariedEmployees.length - 1; i++) {
         System.out.println("Employee " + salariedEmployees[i] + " is a salaried employee.");
      }     
      
      for (int i = 0; i < hourlyEmployees.length - 1; i++) {
         System.out.println("Employee " + hourlyEmployees[i] + " is an hourly employee.");
      }

1 个答案:

答案 0 :(得分:1)

每次添加元素时都必须调整数组的大小。 在 Java 中,这是通过以下方式完成的:

  1. 创建一个具有新大小的新数组。
  2. 将元素移动到新数组中。
  3. 用新数组覆盖引用旧数组的变量值。
<块引用>

旧数组不会再被引用,会被 jvm 的垃圾回收器销毁。

注意:您的问题可能会被标记为重复,我鼓励您搜索答案:)

您可以搜索的参考文献: