需要使用java从e mp.csv获得最高薪水和第二最高薪水的帮助

问题描述 投票:1回答:2

我有一个csv文件,其中包含empname,emp id,designation和薪金的3个条目罗伯特,33,经理,12000杜瓦尔(23,Associate,6000)Kierron,33,AD,20000

使用Java程序,我希望获得最高薪水和第二高薪水

公共类HighSalary {

public static void highSalary() throws IOException {
    String record;
    BufferedReader br = new BufferedReader(new FileReader("/Users/ak/Documents/emp.csv"));

    System.out.println("\t\t  Max Salary Record\n");

    System.out.println(" ------------------------------------------------------------- ");
    System.out.println("|   Name        Age         Desig       Salary        |");
    System.out.println(" ------------------------------------------------------------- ");

    List<List<String>> arlist = new ArrayList<>();
    // List<String> list = Arrays.asList(a);
    int maxSal = 0;

    while ((record = br.readLine()) != null) {

        String[] words = record.split(",");

        arlist.add(Arrays.asList(words));

        for (int i = 0; i < words.length; i++) {

            if (maxSal <= Integer.parseInt(words[3])) {
                maxSal = Integer.parseInt(words[3]);

            } else {
                maxSal = maxSal;

            }

        }

        System.out.println("From The Salary Largest Number is:" + maxSal);

    }
    br.close();
}

}


此代码的问题是这样打印的,如下所示:从薪水最大的数字是:12000从薪水最大的数字是:12000来自薪金的最大数字是:20000

arraylist
2个回答
0
投票

System.out.println(“来自薪金最大的数字是:” + maxSal);将此内容保留在while循环之外。


0
投票

您需要跟踪两个单独的变量,一个变量用于最高薪水,另一个变量用于第二高薪水。分配最高薪水时,以前的最高薪水应该破坏第二高的薪水。当分配新的第二高位时,仅先前的第二高位应被覆盖。

Integer highest = null;
Integer second = null;

while ((record = br.readLine()) != null) {
    String[] words = record.split(",");
    arlist.add(Arrays.asList(words));

    int salary = Integer.parseInt(words[3]);
    if (highest == null) {
        highest = salary;
        second = salary;
    }
    else if (salary > highest) {
        second = highest;
        highest = salary;
    }
    else if (salary > second) {
        second = salary;
    }
}

System.out.println("highest salary: " + highest);
System.out.println("second highest salary: " + second);
© www.soinside.com 2019 - 2024. All rights reserved.