0

私のプログラムは次のとおりです。

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


  }
}

次の 2 行で問題が発生しました。

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

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

1 行目: required doublefoundと表示されvoidます。

2 行目: 非静的メソッドcalcGrossWasteEmission(int[])は静的コンテキストから参照できません。必須double見つかりましvoidた。

I require と表示される理由がわかりませんdouble。私はそれがすでにだと思いますdouble

助けてください。前もって感謝します。

4

3 に答える 3

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

calculateGasEmissionsomCO2Footprintは静的メソッドではないようです。

その場合は、CO2Footprintクラスをインスタンス化calculateGasEmissionsし、そのインスタンスを呼び出す必要があります。

例えば:

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

2 番目の問題:

配列インデックスは 0 から始まるため、forループはArrayIndexOutofBoundsException.

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

次のようにする必要があります。

   for (int counter = 0; counter <5; counter++)
于 2013-01-16T19:41:38.907 に答える
1
for (int counter = 0; counter <=5; counter++)

これは次のようになります。

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

これは、サイズ 5 の配列内にインデックス 5 がないためです (つまり、配列は 0 から始まります)。

于 2013-01-16T19:41:40.567 に答える
1

確実に知るには CO2Footprint クラスを確認する必要がありますが、calculateGassEmissions(gas) はpublic voidメソッドではなくメソッドであると推測しています。public double

またcalcGrossWasteEmission、静的メソッドではなくインスタンス メソッドであると仮定する必要があります。

于 2013-01-16T19:43:35.970 に答える