私はここで初めてのユーザーですが、私の初心者の質問への回答を見つけようとして、過去にここにたどり着くことがありました.
つまり、基本的に、地球の表面温度を見つけるために使用しているこのコードがあり、提供されたいくつかのフォーラムを実装しています。大気中の炭素レベルに応じて変化する値 (epCarbonDi) を見つける必要があります。「for」ループを使用して、炭素の量が変化するたびにJavaに式を実行させましたが、bluejはそれをコンパイルしませんでした。変数が初期化されていない可能性があるとのことでした。「for」ループの前に宣言しましたが、値を割り当てませんでした。「for」ループは変数に値を入力するためのものであり、後でループの外で使用する必要があるためです。
ループの外側の変数を 0 で初期化すれば、そのように動作するはずだとどこかで読んだので^^、それを実行したところ、コンパイルが完了し、素晴らしい結果が得られました。私はそれを実行しに行き、私の情報行はすべてうまくいきますが、見よ、すべての答えは同じです!!
それで、「for」ループが1回実行されて答えが見つかったが、それを行うために必要な他のすべての値に対してそれを行っていないことを収集しますか?
誰かが何かアドバイスを持っているなら、本当に本当に必要です..私はとても感謝しています. 次の方程式のループ値を使用して、「for」ループの外側で epCarbonDi 変数を使用できるようにする必要があります。誰かが私を正しい方向に向けることができれば、それは素晴らしいことです. 私は Java に非常に慣れていません。すべてのノートと持っている教科書を読み直しました。Google で検索しましたが、それを機能させるものは何も見つかりませんでした D:
これは私のコード全体です
import java.text.DecimalFormat;
import java.math.RoundingMode;
/**
* A program to calculate the surface temperature of Earth
* based on a range of carbon dioxide levels.
*
* @author Lyssa ------ - Student #---------
* @version ----------
*/
public class Stage4
{
public static void main(String[] args)
{
//define constants for calculating emissivity
final double EP_WATER = 0.65; //component of emissivity due to water
final double A = 0.1; //component of emissivity due to carbon dioxide
final double B = 0.06; //component of emissivity due to carbon dioxide
final double PREINDUST_CARBONDI = 280; //pre-industrial level of carbon dioxide in Earth's atmosphere
//define surface temperature constants
final double SOLAR_CONSTANT = 1367;
final double ALBEDO = 0.3;
final double STEFANB_CONSTANT = 5.67E-8;
final double ORBIT_RAD = 1.0; //the orbital radius of Earth.
final double KELV_CELS_DIFF = 273.15; //the difference between kelvin and celsius.
//declare variables to hold answer values
double epsilon; //emissivity of the planet
double epCarbonDi = 0.0; //component of emissivity due to carbon dioxide
double surfaceTemp;
double surfaceTempCelsius;
//formula to calcluate value of emissivity due to carbon dioxide
for(double carbonDiox = 280.0; carbonDiox <= 400.0; carbonDiox = carbonDiox += 5)
{
epCarbonDi = A + B*Math.log(carbonDiox/PREINDUST_CARBONDI);
}
//formula to calculate emissivity
epsilon = 1.0 - (EP_WATER + epCarbonDi/2);
//write calculation to find surface temperature
surfaceTemp =
Math.pow((SOLAR_CONSTANT/4)*(1.0 - ALBEDO)
/(STEFANB_CONSTANT*epsilon*ORBIT_RAD*ORBIT_RAD), 0.25);
//convert answer from kelvin to celcius
surfaceTempCelsius = surfaceTemp - KELV_CELS_DIFF;
//enable answer to be truncated to 2 decimal places
DecimalFormat df = new DecimalFormat("####0.00");
df.setRoundingMode(RoundingMode.FLOOR);
for(double carbonDiox = 280.0; carbonDiox <= 400.0; carbonDiox = carbonDiox += 5)
{
System.out.print("For a carbon level of " + carbonDiox +
" the surface temperature is: "
+ df.format(surfaceTempCelsius)
+ " \u00b0" + "C");
System.out.print("\n");
}
}
}
そして、これは私が問題を抱えている場所です:
//declare variables to hold answer values
double epsilon; //emissivity of the planet
double epCarbonDi = 0.0; //component of emissivity due to carbon dioxide
double surfaceTemp;
double surfaceTempCelsius;
//formula to calcluate value of emissivity due to carbon dioxide
for(double carbonDiox = 280.0; carbonDiox <= 400.0; carbonDiox = carbonDiox += 5)
{
epCarbonDi = A + B*Math.log(carbonDiox/PREINDUST_CARBONDI);
}
//formula to calculate emissivity
epsilon = 1.0 - (EP_WATER + epCarbonDi/2);
//write calculation to find surface temperature
surfaceTemp =
Math.pow((SOLAR_CONSTANT/4)*(1.0 - ALBEDO)
/(STEFANB_CONSTANT*epsilon*ORBIT_RAD*ORBIT_RAD), 0.25);