所以我正在编写一个程序来查找某些人的工资的最大值,最小值,总数和平均值。我决定把人们的名字变成arraylist字符串,把他们的工资变成arraylist整数。我的问题是能够输出我想要的maxsalary,minsalary,averagesalary,以及总薪水,因为当我运行我的程序时,它会将每个值都设为0。
这是我的代码:
package employees;
import java.util.ArrayList;
public class Persons {
//method to add salaries
//find average and min and max
int maxSal;
int minSal;
int totalSal;
double averageSal;
public ArrayList people;
public ArrayList salaries;
public int totals() {
//int totalSal = 0;
for(int i = 0; i < salaries.size(); i++)
totalSal += salaries.indexOf(i);
return totalSal;
}
public int minSal() {
//minSal = 0;
for(int i = 0; i < salaries.size(); i++)
if( minSal > i)
minSal = i;
return minSal;
}
public int maxSal() {
//maxSal = 0;
for(int i = 0; i < salaries.size(); i++)
if( i > maxSal)
maxSal = i;
return maxSal;
}
public double averageSal() {
double averageSal =((totalSal)/5);
return averageSal;
}
}
//mainmethod
package employees;
import java.util.ArrayList;
public class PersonsTest {
Persons persons;
Job job;
public static void main(String[] args) {
Persons g = new Persons();
ArrayList<String> people = new ArrayList<String>();
people.add("Ron");
people.add("Don");
people.add("Armin");
people.add("Ferry");
people.add("Ben");
ArrayList<Integer> salaries = new ArrayList<Integer>();
salaries.add(50000);
salaries.add(40000);
salaries.add(70000);
salaries.add(55000);
salaries.add(90000);
System.out.println(g.maxSal);
System.out.println(g.minSal);
System.out.println(g.averageSal);
System.out.println(g.totalSal);
}
}
答案 0 :(得分:0)
您的实施存在一些逻辑错误。
首先应该使用
int maxSal;
int minSal;
int totalSal;
double averageSal;
在你的方法中并用0开始它们。
修改强> 没有必要初始化它们。默认情况下,它们设置为0.您可以在此处看到: Primitive Datatypes in JAVA
第二个错误在你的总计方法中。
totalSal += salaries.indexOf(i);
如果你看一下api:
indexOf方法返回第一次出现的索引
将其更改为:
totalSal += salaries.get(i);
更好地完成您的工作:
您无需自行实施。有一些图书馆:
编辑2
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.*;
ArrayList<Integer> salary = new ArrayList<Integer>();
salary.add(50000);
salary.add(40000);
salary.add(70000);
salary.add(55000);
salary.add(90000);
System.out.println(Collections.min(salary));
System.out.println(Collections.max(salary));
/*Without java 8*/
int sum = 0;
for (Integer e : salary) sum += e;
System.out.println(sum);
/*AVG*/
double avg = sum / salary.size();
System.out.println(sum);
System.out.println(avg);