我有一个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
System.out.println(“来自薪金最大的数字是:” + maxSal);将此内容保留在while循环之外。
您需要跟踪两个单独的变量,一个变量用于最高薪水,另一个变量用于第二高薪水。分配最高薪水时,以前的最高薪水应该破坏第二高的薪水。当分配新的第二高位时,仅先前的第二高位应被覆盖。
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);