我想在java中找到max和min值

时间:2016-12-24 18:07:45

标签: java

我希望显示薪水的最大值和最小值,但我得到的最大值和最小值相同。这是我的代码:

import java.util.*;

class Wage {

String employee_name, skill;
int hours;
double sum;
String[] sno = {"1", "2", "3", "4"};
double max = Double.MIN_VALUE;
double min = Double.MAX_VALUE;
Scanner s = new Scanner(System.in);

public void getEmployeeDetails() {
    System.out.println("Welcome to Use General Wage Record System");
    for (String count : sno) {

        if (count.equalsIgnoreCase("1")) {
            System.out.print("Enter Name of Employee 1:  ");
            employee_name = s.nextLine();
            System.out.print("Enter the Skill Level (1,2,3) of Employee:");
            Integer level_count = Integer.valueOf(s.nextLine());
            if (level_count <= 3) {
                System.out.print("Enter the Worked  Hours for  " + employee_name + ":");
                hours = Integer.parseInt(s.nextLine());
                if (level_count == 1) {
                    sum = hours * 15;
                }
                if (level_count == 2) {
                    sum = hours * 17;
                }
                if (level_count == 3) {
                    sum = hours * 21;
                }

                System.out.println("The wage of employee" + employee_name + "(Level" + String.valueOf(level_count) + ")" + "for" + hours + " " + "hours is" + " " + "$" + sum);
            }

        }

        if (count.equalsIgnoreCase("2")) {
            System.out.print("Enter Name of Employee 2:");
            employee_name = s.nextLine();

            System.out.print("Enter the Skill Level (1,2,3) of Employee:");

               Integer level_count = Integer.valueOf(s.nextLine());
            if (level_count <= 3) {
                System.out.print("Enter the Worked  Hours for  " + employee_name + ":");
                hours = Integer.parseInt(s.nextLine());
                if (level_count == 1) {
                    sum = hours * 15;
                }
                if (level_count == 2) {
                    sum = hours * 17;
                }
                if (level_count == 3) {
                    sum = hours * 21;
                }
                System.out.println("The wage of employee " + employee_name + "(Level " + String.valueOf(level_count) + ")" + "for" + hours + " " + "hours is" + " " + "$" + sum);
            }

        }

        if (count.equalsIgnoreCase("3")) {
            System.out.print("Enter Name of Employee 3:");
            employee_name = s.nextLine();
            System.out.print("Enter the Skill Level (1,2,3) of Employee:");
            Integer level_count = Integer.valueOf(s.nextLine());
            if (level_count <= 3) {
                System.out.print("Enter the Worked  Hours for  " + employee_name + ":");
                hours = Integer.parseInt(s.nextLine());
                if (level_count == 1) {
                    sum = hours * 15;
                }
                if (level_count == 2) {
                    sum = hours * 17;
                }
                if (level_count == 3) {
                    sum = hours * 21;
                }

                System.out.println("The wage of employee" + employee_name + "(Level" + String.valueOf(level_count) + ")" + "for" + hours + " " + "hours is" + " $" + sum);
            }

        }

        if (count.equalsIgnoreCase("4")) {
            System.out.print("Enter Name of Employee 4:");
            employee_name = s.nextLine();
            System.out.print("Enter the Skill Level (1,2,3) of Employee:");

              Integer level_count = Integer.valueOf(s.nextLine());
            if (level_count <= 3) {
                System.out.print("Enter the Worked  Hours for  " + employee_name + ":");
                hours = Integer.parseInt(s.nextLine());
                if (level_count == 1) {
                    sum = hours * 15;
                }
                if (level_count == 2) {
                    sum = hours * 17;
                }
                if (level_count == 3) {
                    sum = hours * 21;
                }
                System.out.println("The wage of employee" + employee_name + "(Level" + String.valueOf(level_count) + ")" + "for" + hours + " " + "hours is" + "$ " + sum);
            }

        }
    }

}

void average() {
    System.out.println("\n\n");
    System.out.println("stastical information for bar chart");
    System.out.println("==================================");

    if (sum > max) {

        max = sum;

        System.out.println("Maximum of wage" + max + ",  " + employee_name);
    }
    if (sum < min) {
        min= sum ;
        System.out.println("Minimum of Wage" + min + ",  " + employee_name);
    }
}

}

 public class Pay {

/**
 * @param args the command line arguments
 */
  public static void main(String[] args) {

      Wage wm = new Wage();
    wm.getEmployeeDetails();
    wm.average();
}

1 个答案:

答案 0 :(得分:0)

getEmployeeDetails()方法的循环中,您不存储和更新具有这些工资的最低工资,最高工资和员工姓名。
此外,您应该在命名方面更具体。例如,maxWageminWagemaxmin更有意义。
因此,您应该在maxWage类的字段声明中包含maxWageEmployeeNameminWageminWageEmployeeNameWage字段。

在系统中插入的每个员工中,您应该通过调用专用方法来更新这些值:

public void getEmployeeDetails() {

  if (count.equalsIgnoreCase("1")) {
    ....
    updateRanking(sum, employee_name);
  }
}

public void updateRanking(double actualWage, String employee_name){
    if (actualWage > maxWage) {
        maxWage = actualWage;
        maxWageEmployeeName = employee_name;
    }
    else if (actualWage < minWage) {
        minWage = actualWage;
        minWageEmployeeName = employee_name;
    }
}

此外,您在程序结束时调用的average()方法应该只显示结果而不执行比较,因为您应该有关于最高,最低工资的更新信息以及有updateRanking()这些的更新信息。在每次插入员工工资时都要求:

void average() {
    System.out.println("\n\n");
    System.out.println("stastical information for bar chart");
    System.out.println("==================================");           
    System.out.println("Maximum of wage" + maxWage + ",  " + maxWageEmployeeName );      
    System.out.println("Minimum of Wage" + minWage + ",  " + minWageEmployeeName );       
}