我正在开发一个程序,该程序应该在员工时间的文件中读取,将该文件存储在2D数组中,打印该2D数组,然后打印每个员工的总小时数。我知道,这有点模糊,但我的问题更多的是我一直得到的这个错误信息,而不是程序本身。这是我的代码
import java.util.Scanner;
public class Program2 {
public static void main(String[] args) {
int employeeNum;
int i;
int j;
int empId;
int days;
int[][] hoursArray = new int[employeeNum][7];
int[] totalHours = new int[hoursArray.length];
int[] indexList = new int[totalHours.length];
java.io.File file = new java.io.File("../instr/prog2.dat");
Scanner fin = new Scanner(file);
employeeNum = fin.nextInt();
for(empId = 0; empId < employeeNum;
empId++)
for(days = 0; days < 7; days++)
hoursArray[empId][days] = fin.nextInt();
System.out.println(hoursArray[empId][days]);
for(i = 0; i < hoursArray.length; i++) for(j = 0; j < hoursArray[i].length; j++)
totalHours[i] += hoursArray[i][j];
sortIndex(totalHours.length, indexList);
for (int index = totalHours.length - 1; index >= 0; index--)
System.out.println("Employee " + indexList[index] + ": "
+ totalHours[index]);
}
static void sortIndex(int[] list, int[] indexList) {
int max;
int maxIndex;
int i;
int j;
for(i = 0; i < indexList.length; i++)
indexList[i] = i;
for(i = list.length - 1; i >= 1; i--) {
max = list[i];
maxIndex = i;
for(j = i - 1; j >= 0; j--)
if(max < list[j]) {
max = list[j];
maxIndex = j;
}
}
if(maxIndex != i) {
list[maxIndex] = list[i];
list[i] = max;
int temp = indexList[i];
indexList[i] = indexList[maxIndex];
indexList[maxIndex] = temp;
}
}
}
我不断收到错误消息:
"The method sortIndex(int[], int[]) in the type Prog2 is not applicable for the arguments (int, int[])"
代码的这一部分:
sortIndex(totalHours.length, indexList);
我以前从未遇到过这个错误,也不知道如何修复它。这个特殊的作业是书中的一个变体,它有一个为它编写的程序,但书中的问题并不涉及文件。我们的教授说这应该很简单,因为我们基本上可以输入书中的确切程序,只编写代码来读取文件的输入。所以我遇到问题的代码部分直接来自本书,所以我不知道我应该做些什么来修复它。请帮忙。
答案 0 :(得分:1)
错误是不言自明的:
方法void sortIndex(int[] list, int[] indexList)
需要两个1D数组作为输入,但在调用它时,您发送的第一个参数为totalHours.length,它是数组的长度和int值,而不是int 1D数组。
sortIndex(totalHours.length, indexList);
好像你需要打电话:
sortIndex(totalHours, indexList);
as totalHours是一维数组。