所以,我開發了一個假設被另一個類使用的類。我公司開發的類如下:輸出是「NaN」
public class Car
{
private double milesPerGallon;
private double gas;
//Constructs a car with a given fuel efficiency
public Car(double milesPerGallon)
{
gas = 0.0;
}
//Increases the amount of gas in the gas tank
public void addGas(double amount)
{
gas = gas + amount;
}
//Decreases the amount of gas in the gas tank (due to driving and therefore consuming gas)
public void drive(double distance)
{
gas = gas - (distance/milesPerGallon);
}
//Calculates range, the number of miles the car can travel until the gas tank is empty
public double range()
{
double range;
range = gas * milesPerGallon;
return range;
}
}
是想利用我公司開發的類的類是:
public class CarTester
{
/**
* main() method
*/
public static void main(String[] args)
{
Car honda = new Car(30.0); // 30 miles per gallon
honda.addGas(9.0); // add 9 more gallons
honda.drive(210.0); // drive 210 miles
// print range remaining
System.out.println("Honda range remaining: " + honda.range());
Car toyota = new Car(26.0); // 26 miles per gallon
toyota.addGas(4.5); // add 4.5 more gallons
toyota.drive(150.0); // drive 150 miles
// print range remaining
System.out.println("Toyota range remaining: " + toyota.range());
}
}
兩個類編譯成功,但是當程序運行時,我得到的輸出「NaN」,代表「不是數字」。我查了一下,據推測,當有一個數學過程試圖用零或類似的東西劃分時就會發生這種情況。我不是,我再說一遍,不是在尋找答案,而是在正確的方向上推動我可能會犯我的錯誤的地方,我會非常感激(我敢肯定這是一個非常小而愚蠢的錯誤)。謝謝!
不能快速測試這個,強制轉換任何值到一個整數/浮點數......所以這意味着即使你在做toyota.range()...將它作爲float/double值包裝。 – Mayhem 2015-02-07 01:59:29
看看你的'milesPerGallon'實例變量。哪裏不對了? – Voicu 2015-02-07 02:00:51
因爲'honda.milesPerGallon'爲0,因爲你從來沒有把它設置爲任何東西。 (這就是爲什麼重要的是不要給出兩個不同的東西同名 - 因爲它會讓你感到困惑) – immibis 2015-02-07 02:01:40