1
public class BottledWaterTester {
public static void main (String args[])
{
    BottledWaterCalculator tester = new BottledWaterCalculator("USA", 350000000, 190.0, 8.5, 12.0);


    System.out.println("The country is " + tester.getCountryName());
    System.out.println("The population is " + tester.getPopulation());
    System.out.println("The number of times the bottles circle the Equator is " + tester.getNumberCircled());
    System.out.println("The average length of a bottle is " + tester.getLength());
    System.out.println("The average volume of a bottle is " + tester.getVolume());
}

}

だから私は上記のコードを持っています。しかし、実行すると、次の出力が得られます。

*走る:

国はヌルです

人口は0です

ボトルが赤道を一周する回数は 0.0 です。

ボトルの平均の長さは 0.0

ボトルの平均容積は 0.0

ビルド成功 (合計時間: 0 秒)*

どうして??明らかに値をテスター オブジェクトに渡しています。コンストラクターは次のように定義されています。

public class BottledWaterCalculator {

//instance vars
private String countryName;
private int population;
private double numberCircled;
private double avgLength;
private double avgVolume;

//constructor
// note: constructor name must always be same as public class name, or else it's a method
public BottledWaterCalculator(String country, int pop, double number, double lengthAvg, double volumeAvg)
{
    country = countryName;
    pop = population;
    number = numberCircled;
    lengthAvg = avgLength;
    volumeAvg = avgVolume;
}

私はプログラミングに本当に慣れていないので、何が起こっているのか理解できません。

4

4 に答える 4

1
public BottledWaterCalculator(String country, int pop, double number, double lengthAvg, double volumeAvg)
{
  countryName  = country ;
  population=  pop;
  numberCircled =  number ;
  avgLength = lengthAvg;
  avgVolume = volumeAvg ;
}

変数の順序が間違っています。オブジェクトではなく、コンストラクターのパラメーターに値を割り当てています

于 2013-09-26T03:42:27.070 に答える
0

コンストラクターで、変数の割り当てを反転します。元:

countryName = country;

ローカル変数の値に渡す現在の設定。(すべて空/null/未割り当て)

于 2013-09-26T03:43:30.557 に答える
0

以下のようにコードを変更します。

public class BottledWaterCalculator {

//instance vars
private String countryName;
private int population;
private double numberCircled;
private double avgLength;
private double avgVolume;

//constructor
// note: constructor name must always be same as public class name, or else it's a method
public BottledWaterCalculator(String country, int pop, double number, double lengthAvg, double volumeAvg)
{
    countryName = country;
    population = pop;
    numberCircled = number ;
    avgLength = lengthAvg ;
    avgVolume = volumeAvg ;
}
于 2013-09-26T03:46:09.507 に答える
0

コンストラクターに割り当てるときに、このキーワードを割り当てる必要があります。

于 2013-09-26T04:38:40.920 に答える