1

みなさん、おはようございます。

そこで、温度を作成するコンストラクターを持つクラスTemperatureを作成しました。温度は2つの数値[冷たさ、熱さ]の配列リストです。

    public int hotness;
public int coldness;
public int[] temperature;
public int maxTemperature = 10000;


//Constructor Temperature
public Temperature(int hotness, int coldness) {
    /**
     * A constructor for the Array Temperature
     */
    maxTemperature = getMaxTemperature();
        if(hotness <= maxTemperature && coldness <= maxTemperature)
        temperature[0] = coldness;
        temperature[1] = hotness;
        }

そして今、私は別のクラスに入り、そのオブジェクトTemperatureを使用していくつかの計算を行いたいと思います。これがそのコードです。

    //Variabels

public int volatility;
private static Temperature temperature;
private static int intrensicExplosivity;

    public static int standardVolatility(){
    if(temperature[0] == 0){
        int standardVolatility = 100 * intrensicExplosivity * (0.10 * temperature[1]);
    }

そのため、エラーが発生します。式の型は配列型である必要がありますが、「Temperature」に解決されました。

解決策はありますか?

私はJavaにまったく慣れていないので、おそらくいくつかのsynthaxエラーですが、それを見つけることができません。

前もって感謝します。デビッド

4

5 に答える 5

1

それ以外の

public static int standardVolatility() {
    if(temperature[0] == 0) {

試す

public static int standardVolatility() {
    if(tepmerature.temperature[0] == 0) {
       ^^^^^^^^^^^^

temperature2番目のスニペットのinは、Temperatureそれ自体がと呼ばれるint配列を持つ型であることに注意してくださいtemperature。オブジェクトのtemperature-arrayにアクセスするには、を実行する必要があります。Temperaturetemperature.temperature


@Marko Topolnikが指摘しているように、変更することもできます

public int[] temperature;

public int[] temperature = new int[2];

2つの温度値のためのスペースを作るために。

于 2012-05-10T07:39:33.923 に答える
1

最初にgetterメソッドとsetterメソッドをTemperatureクラスに作成し、次にtemperature.getTempertature()を呼び出して、2番目のクラスで使用します。

于 2012-05-10T07:44:38.470 に答える
0

tempetureTempeture配列ではないタイプです。temperature必要なのは、オブジェクトインスタンス(これも呼び出します)内の配列メンバーですtempature

とにかくラインを変更します:

if(temperature[0] == 0) 
.
.

と :

if(temperature.tempature[0] == 0)
.
.

ゲッターとセッターを使用し、混乱しない名前を使用することをお勧めします。

于 2012-05-10T07:39:51.717 に答える
0

ここでいくつかの変数を混同します。

以下のコードブロックでは、クラスtemperatureのインスタンスを参照していますが、Temperatureクラスのメンバーである温度配列を参照していると想定していますTemperature

public static int standardVolatility() {
    if(temperature.temperature[0] == 0){
        int standardVolatility = 100 * intrensicExplosivity * (0.10 * temperature[1]);
    }
于 2012-05-10T07:41:00.297 に答える
0

さて、あなたの問題はここにあります

private static Temperature temperature;
if(temperature[0] == 0){
        int standardVolatility = 100 * intrensicExplosivity * (0.10 * temperature[1]);
}

オブジェクトを配列として使用しています。それは間違っている。代わりに、温度を設定および取得するGETおよびsetメソッドを使用してください。すべてのデータを公開しないでください。これはオブジェクト指向プログラミングにとって非常に悪いことです。それらのゲッターとセッターを使用してください。次のようなもの:if(temperature.getTemperature()==0) etc.

Temperature temperature = new Temperature(10,30);PS:新しい演算子( )でオブジェクトを初期化することを忘れないでください

于 2012-05-10T07:47:24.940 に答える