实现和输出ArrayLists

时间:2017-02-03 08:09:46

标签: java arrays arraylist

所以我正在编写一个程序来查找某些人的工资的最大值,最小值,总数和平均值。我决定把人们的名字变成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);    
     }
}

1 个答案:

答案 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);