user1984752
user1984752

Reputation: 21

Error on getting arrays

My program is:

public class CO2FootPrintTester {
  public static void main(String[] args) {


    //declaration of variables 

    int[] numberOfPeople = new int[5];
    numberOfPeople[0] = 3;
    numberOfPeople[1] = 6;
    numberOfPeople[2] = 2;
    numberOfPeople[3] = 10;
    numberOfPeople[4] = 1;

    double[] avgElecBill = new double[5];
    avgElecBill[0] = 227.29;
    avgElecBill[1] = 213.28;
    avgElecBill[2] = 234.78;
    avgElecBill[3] = 256.04;
    avgElecBill[4] = 221.96;

    for (int counter = 0; counter <= 5; counter++) {
      int totalAverageElectricBill = 0;
      totalAverageElectricBill += avgElecBill[counter];
      int averageElectricBill = totalAverageElectricBill / 5;
    }


    boolean[] cans = new boolean[5];
    cans[0] = true;
    cans[1] = false;
    cans[2] = true;
    cans[3] = false;
    cans[4] = true;

    boolean[] glass = new boolean[5];
    glass[0] = true;
    glass[1] = false;
    glass[2] = true;
    glass[3] = false;
    glass[4] = true;

    boolean[] plastic = new boolean[5];
    plastic[0] = true;
    plastic[1] = true;
    plastic[2] = false;
    plastic[3] = false;
    plastic[4] = true;

    boolean[] paper = new boolean[5];
    paper[0] = true;
    paper[1] = false;
    paper[2] = true;
    paper[3] = false;
    paper[4] = true;

    int[] numLights = new int[5];
    numLights[0] = 9;
    numLights[1] = 3;
    numLights[2] = 5;
    numLights[3] = 1;
    numLights[4] = 8;

    for (int counter = 0; counter <= 5; counter++) {
      int[] lightsTotal = new int[5];
      lightsTotal[counter] += numLights[counter];
    }


    int[] gas = new int[5];
    gas[0] = 2604;
    gas[1] = 3029;
    gas[2] = 1745;
    gas[3] = 3590;
    gas[4] = 1362;

    for (int counter = 0; counter <= 5; counter++) {
      int gasTotal = 0;
      gasTotal += gas[counter];
    }

    double[] avgElecPrice = new double[5];
    avgElecPrice[0] = .084;
    avgElecPrice[1] = .081;
    avgElecPrice[2] = .085;
    avgElecPrice[3] = .084;
    avgElecPrice[4] = .086;

    for (int counter = 0; counter <= 5; counter++) {
      int totalAverageElectricPrice = 0;
      totalAverageElectricPrice += avgElecPrice[counter];
      int averageElecPrice = 0;
      averageElecPrice = totalAverageElectricPrice / 5;
    }

    double[] gasFootprint = new double[5];
    double[] electricityEmissions = new double[5];
    double[] emissionReductions = new double[5];
    double[] grossWasteEmission = new double[5];


    //call methods
    for (int counter = 0; counter <= 4; counter++) {

      gasFootprint[counter] = CO2Footprint.calculateGasEmissions(gas);
      electricityEmissions[counter] = CO2Footprint.calculateElectricityEmissions(averageElectricBill, averageElecPrice);
      emissionReductions[counter] = CO2Footprint.calcNetWasteReduction(cans, plastic, glass, paper, grossWasteEmission, numberOfPeople);
      grossWasteEmission[counter] = CO2Footprint.calcGrossWasteEmission(numberOfPeople);
    }


    //print results

    System.out.println("|               Pounds of CO2             |      Pounds of CO2         |                       |");
    System.out.println("|               Emmited from              |      Reduced from          |                       |");
    System.out.println("|   Gas   |      Electricity  |   Waste   |   Recycling  |  New Bulbs  |    CO2 Footprint      |");


  }
}

I got problems on the following two lines:

gasFootprint[counter] = CO2Footprint.calculateGasEmissions(gas);

grossWasteEmission[counter] = CO2Footprint.calcGrossWasteEmission(numberOfPeople);

Line 1: It says required double found void.

Line 2: non-static method calcGrossWasteEmission(int[]) cannot be referenced from a static context. Required double found void.

I don't know why it says I require double. I think it is already a double.

Please help. Thanks in advance.

Upvotes: 0

Views: 114

Answers (3)

kosa
kosa

Reputation: 66637

gasFootprint[counter] = CO2Footprint.calculateGasEmissions(gas);

It seems calculateGasEmissions om CO2Footprint is not static method.

If that is the case, then you need to instantiate CO2Footprint class and call calculateGasEmissions on that instance.

For example:

CO2Footprint co2Instance = new CO2Footprint();
co2Instance.calculateGasEmissions(gas);

Second issue:

Array index starts from 0, so, your for loop will through ArrayIndexOutofBoundsException.

 for (int counter = 0; counter <=5; counter++)

should be:

   for (int counter = 0; counter <5; counter++)

Upvotes: 1

Mike Clark
Mike Clark

Reputation: 11969

I would have to see the CO2Footprint class to know for sure, but I am guessing that calculateGassEmissions(gas) is a public void method instead of a public double

Also I would have to make the assumption that calcGrossWasteEmission is an instance method rather than a static.

Upvotes: 1

Eng.Fouad
Eng.Fouad

Reputation: 117587

for (int counter = 0; counter <=5; counter++)

This should be:

for (int counter = 0; counter < 5; counter++)

since there is no index 5 within an array of size 5 (i.e arrays start from 0).

Upvotes: 1

Related Questions