我在使用 Java 方法时遇到问题。这段代码应该有三种方法。方法 1) 输入员 worker 数。方法 2) 输入每位员工的缺勤天数。方法 3) 计算平均缺勤天数。然后,在 Main 中,应打印雇员数、缺勤天数和平均缺勤天数。显然,我不明白这些方法是如何工作的,因为当我运行代码时,系统会询问用户 4 倍的员 worker 数和 2 倍的员工缺勤天数,然后才会提供员工数量、缺勤天数和平均缺勤天数。缺席的日子。如何更改代码以便用户只需输入一次信息?
public static void main(String[] args) {
/** Asks for the # of employees and their days absent using
3 methods. 1) Requests number of employees, 2) # of days absent, 3)
Average # of days absent)*/
int numEmployeeM, numDaysMissedM;
double averageNumDaysAbsentM;
numEmployeeM = numEmployee();
numDaysMissedM = numDaysMissed(numEmployeeM);
averageNumDaysAbsentM = averageNumDaysAbsent(numEmployeeM,
numDaysMissedM);
System.out.println("\n\tTotal number of employees: " + numEmployeeM +
"\n\tTotal number of days missed: " + numDaysMissedM +
"\n\tAverage number of days absent: " + averageNumDaysAbsentM);
}
public static int numEmployee() {
Scanner keyboard = new Scanner(System.in);
int numEmployee;
System.out.print("Number of employees in company:");
numEmployee = keyboard.nextInt();
return numEmployee;
}
public static int numDaysMissed(int numEmployee1) {
Scanner keyboard = new Scanner(System.in);
int count, numDaysMissed, totalNumDaysMissed;
count = 1;
totalNumDaysMissed = 0;
numEmployee1 = numEmployee();
while (count <= numEmployee1) {
System.out.print("Enter number of days missed by Employee #"
+ count + ": ");
numDaysMissed = keyboard.nextInt();
totalNumDaysMissed += numDaysMissed;
count++;
}
return totalNumDaysMissed;
}
public static double averageNumDaysAbsent(int numEmployee2,
int totalNumDaysMissed1) {
double averageDaysMissed;
numEmployee2 = numEmployee();
totalNumDaysMissed1 = numDaysMissed(numEmployee2);
averageDaysMissed = (totalNumDaysMissed1 / numEmployee2);
return averageDaysMissed;
}
最佳答案
简化代码以查看什么在调用什么:
void main(String[] args)
{
numEmployeeM = numEmployee();
numDaysMissedM = numDaysMissed(numEmployeeM);
averageNumDaysAbsentM = averageNumDaysAbsent(numEmployeeM, numDaysMissedM);
}
int numEmployee()
{
}
int numDaysMissed(int numEmployee1)
{
numEmployee1 = numEmployee();
}
double averageNumDaysAbsent(int numEmployee2, int totalNumDaysMissed1)
{
numEmployee2 = numEmployee();
totalNumDaysMissed1 = numDaysMissed(numEmployee2);
}
所以当你的代码执行时,它会调用
- 主要
- 员 worker 数
- numDaysMissed
- 员 worker 数
- 平均缺勤天数
- 员 worker 数
- numDaysMissed
- 员 worker 数
这给出了 1x averageNumDaysAbsent
、2x numDaysMissed
和 4x numEmployee
在 numDaysMissed
和 averageNumDaysAbsent
中,您将覆盖输入参数并使它们无用
尝试删除这些行,它应该会按预期工作
关于Java方法和调用方法太多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47357633/