获取数组时出错

时间:2013-01-16 19:40:07

标签: java arrays

我的节目是:

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      |");


  }
}

我在以下两行遇到了问题:

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

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

第1行:它表示double void已找到{。}}。

第2行:无法从静态上下文引用非静态方法calcGrossWasteEmission(int[])。必需double找到void

我不知道为什么它说我需要double。我认为它已经是double

请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:1)

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

似乎calculateGasEmissions om CO2Footprint不是静态方法。

如果是这种情况,那么您需要实例化CO2Footprint类并在该实例上调用calculateGasEmissions

例如:

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

第二期:

数组索引从0开始,因此,for循环将通过ArrayIndexOutofBoundsException

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

应该是:

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

答案 1 :(得分:1)

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

这应该是:

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

因为大小为5的数组中没有索引5(即数组从0开始)。

答案 2 :(得分:1)

我必须看到CO2Footprint类肯定知道,但我猜测calculateGassEmissions(gas)是public void方法,而不是public double

另外,我必须假设calcGrossWasteEmission是实例方法而不是静态方法。