그래서 다른 클래스에서 사용하게 될 클래스를 개발했습니다. 다음과 같이 내가 개발 한 클래스입니다 :출력이 "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"은 "숫자가 아닙니다." 나는 이것을 바라 보았고 아마도 0이나 비슷한 것으로 나뉘는 수학적 과정이있을 때 일어난다. 나는 반복하지 않고 답을 찾지 않지만 실수를 저지르고있는 올바른 방향으로 조금 움직여서 (나는 아주 작고 어리석은 실수라고 확신한다). 감사!
이것을 빨리 테스트 할 수는 없지만 모든 값을 정수/float로 강제 변환하십시오. 따라서 toyota.range()가 플로팅/이중 값으로 랩하는 경우에도이 값을 의미합니다. – Mayhem
'milesPerGallon' 인스턴스 변수를보십시오. 뭐가 잘못 됐니? – Voicu
왜냐하면'honda.milesPerGallon'은 0으로 설정했기 때문에 아무것도 설정하지 않았기 때문입니다. (이것은 당신에게 혼란을주기 때문에 두 개의 다른 것들에 동일한 이름을주지 않는 것이 중요합니다.) – immibis