2016-01-17 16 views
0

此程序需要遍历数组列表以将所有整数添加在一起,但我得到一个“int无法解除引用”的错误。我认为整数不能用在数组列表中,但是它在指南程序中是如何使用的,我不知道该怎么做。第一种方法需要计算总人数,然后乘以1018的平均排放量。请帮助我。如何在ArrayList中使用整数和布尔值

此代码已经提供给我,当他们给你代码时,你不会改变他们给你的东西,你只需添加缺少的东西即可。

方法类

// This class instantiates CO2FromWaste(8.11) objects with 8 private instance variables. 
// It contains three mutator methods to calculate the pounds of CO2: in total emissions, 
// emission reductions, and net emissions. It contains getter methods for each private 
// instance variables. Private instance variables include myNumPeople, myPaper, myPlastic, 
// myGlass, myCans, myEmissions, myReduction, and myNetEmissions. 
// 
public class CO2FromWaste 
{ 
    private int myNumPeople; 
    private boolean myPaper, myPlastic, myGlass, myCans; 
    private double myEmissions, myReduction, myNetEmissions; 

    // 
    // Constructor for objects of type CO2FromWaste 
    // @param numPeople number of people in a household 
    // @param paper whether or not paper is recycled 
    // @param plastic whether or not plastic is recycled 
    // @param glass whether or not glass is recycled 
    // @param cans whether or not cans are recycled 

    CO2FromWaste(int numPeople, boolean paper, boolean plastic, boolean glass, boolean cans) 
    { 
     myNumPeople = numPeople; 
     myPaper = paper; 
     myPlastic = plastic; 
     myGlass = glass; 
     myCans = cans; 
     myEmissions = 0.0; 
     myReduction = 0.0; 
     myNetEmissions = 0.0; 
    } 

    // 
    // Mutator method to calculate the total emissions, without any recycling (no parameters) 

这是第一个问题的用武之地。

public void calcGrossWasteEmission() 
    { 
     double sum = 0; 
     for(int i = 0; i< myNumPeople.size(); i++) 
     { 
     sum += myNumpeople.get(i); 
    } 
    myEmissions = sum 1018; 
    } 

    // 
    // Mutator method to calculate the emission reduction from recycling (no parameters) 

    public void calcWasteReduction() 
    { 
     if(myPaper) 
     { 
      myReduction += (184.0 myNumPeople); 
     } 

     // fill in rest of method here // 



    } 

    // 
    // Mutator method to calculate the net emissions (no paramters) 

    public void calcNetWasteReduction() 
    { 
     // fill in rest of method here // 
    } 

    // 
    // Getter method to return the number of people (no paramters) 

    public int getNumPeople() 
    { 
     return myNumPeople; 
    } 

    // 
    // Getter method to return paper's recycled status (true or false) (no paramters) 

    public boolean getPaper() 
    { 
     return myPaper; 
    } 

    // 
    // Getter method to return glass's recycled status (true or false) (no paramters) 

    public boolean getGlass() 
    { 
     return myGlass; 
    } 

    // 
    // Getter method to return plastic's recycled status (true or false) (no paramters) 

    public boolean getPlastic() 
    { 
     return myPlastic; 
    } 

    // 
    // Getter method to return cans' recycled status (true or false) (no paramters) 

    public boolean getCans() 
    { 
     return myCans; 
    } 

    // 
    // Getter method to return the total emissions (no paramters) 

    public double getEmissions() 
    { 
     return myEmissions; 
    } 

    // 
    // Getter method to return the reduction amount (no paramters) 

    public double getReduction() 
    { 
     return myReduction; 
    } 

    // 
    // Getter method to return the net emissions (no paramters) 

    public double getNetEmissions() 
    { 
     return myNetEmissions; 
    } 
} 

Tester类

/** 
* @purpose: Calculate the CO2 from household waste 8.11 
* 
* @author: 
* @version: 
*/ 
import java.util.ArrayList; 

public class CO2FromWasteTester 
{ 
    public static void main(String[] args) 
    { 
     ArrayList<CO2FromWaste> cO2 = new ArrayList<CO2FromWaste>(); 
      // adding households 
      cO2.add(new CO2FromWaste(1,true,true,true,true)); 
      cO2.add(new CO2FromWaste(3,true,false,true,true)); 
      cO2.add(new CO2FromWaste(4,false,false,false,false)); 
      cO2.add(new CO2FromWaste(1,true,true,true,true)); 
      cO2.add(new CO2FromWaste(1,true,true,true,true)); 

     for(CO2FromWaste dataRecord : cO2) 
     { 
      dataRecord.calcGrossWasteEmission(); 
      dataRecord.calcWasteReduction(); 
      dataRecord.calcNetWasteReduction(); 
     } 

     System.out.println("|  |  |           |    Pounds of CO2    |"); 
     System.out.println("|  |  |  Household Waste Recycled   | Total |    |  Net |"); 
     System.out.println("| Index | People | Paper | Plastic | Glass | Cans | Emission | Reduction | Emission |"); 
     System.out.println("|-------|--------|----------|----------|---------|---------|------------|-------------|------------|"); 

     CO2FromWaste dataRecord; 

     for(int index = 0; index < cO2.size(); index ++) 
     { 
      dataRecord = cO2.get(index); 
      System.out.printf("| %1d | %2d | %-5b | %-5b | %-5b | %-5b | %8.2f | %7.2f | %8.2f |%n", index, dataRecord.getNumPeople(), dataRecord.getPaper(), dataRecord.getPlastic(), dataRecord.getGlass(), dataRecord.getCans(), dataRecord.getEmissions(), dataRecord.getReduction(), dataRecord.getNetEmissions()); 
     } 
    } 
} 
+1

可能重复[为什么原始数据类型不允许在java.util.ArrayList?](http://stackoverflow.com/questions/5414920/why-primitive-datatypes-are-not-allowd-in-java- util-arraylist) – Atri

+0

根据代码的评论和逻辑,myNumPeople是一个家庭中的人数,平均排放量是1018.不要以为您需要使用ArrayList来计算calcGrossWasteEmission()。 myNumPeople * 1018应该是结果。 – Dukefirehawk

回答

1

myNumPeopleint,但你要使用它就好像它是一个ListmyNumpeople.get(i)myNumpeople.size()等)。

您应该更改myNumPeople的类型。

+0

它在网络课程中提供给我的程序声明如此,我不认为他们要我改变它 –

+0

@DavidBrewer所以你给了代码,不通过编译,你不应该改变它? – Eran

+0

它给了我一半完整。计算变量的方法是空白的,在我写第一个之后,它给了我一个错误。这个错误可能是我的错,但我不知道为什么。 –

1

intboolean是原始数据类型;他们不是物体,所以他们不能进入List。相反,请使用IntegerBoolean

编辑:伊兰也是对的。

+1

我在哪里更改int整数? –

+0

Java有一个名为Autoboxing的特性,它自动将'int'更改为'Integer'。你所要做的就是将你的'int'加入'ArrayList '。 – ostrichofevil