섭씨 또는 화씨에서의 온도 입력과 피트 또는 미터로 고도를 입력하여 고체, 액체 또는 가스의 물 상태를 계산해야합니다.if 문을 사용하여 물 상태를 계산 하시겠습니까?
나는 프로그램을 실행하려고 할 때 항상 물이 가스 상태라고 말합니다. 나는 내가 빠진 것을 알아낼 수 없다. 또는 잘못하고있다.
public class Water
{
private final double temperature;
private final String degrees;
private final int altitude;
private final String units;
private final double bpFeet;
private final double bpMeters;
private String waterState;
public Water(double temp, String deg, int alt, String unitType)
{
temperature = temp;
degrees = deg;
altitude = alt;
units = unitType;
bpFeet = temperature - (altitude * 0.001); //boiling point given an altitude in feet
bpMeters = temperature - (altitude * 0.01); //boiling point given an altitude in meters
}
public String getState()
{
if (degrees.equals("F"))
{
if (units.equals("Ft"))
{
if (temperature >= bpFeet)
{
waterState = "The water is gaseous.";
System.out.println(waterState);
}
else if (temperature > 32 && temperature < bpFeet)
{
waterState = "The water is liquid.";
System.out.println(waterState);
}
else
{
waterState = "The water is solid.";
System.out.println(waterState);
}
}
else if (units.equals("M"))
{
if (temperature <= bpMeters)
{
waterState = "The water is solid.";
System.out.println(waterState);
}
else if (temperature > 32 && temperature < bpMeters)
{
waterState = "The water is liquid.";
System.out.println(waterState);
}
else
{
waterState = "The water is solid.";
System.out.println(waterState);
}
}
else
{
System.out.println("Error: must enter FT (feet) or M (meters)");
}
}
else if (degrees.equals("C"))
{
if (units.equals("Ft"))
{
if (temperature >= bpFeet)
{
waterState = "The water is gaseous.";
System.out.println(waterState);
}
else if (temperature > 0 && temperature < bpFeet)
{
waterState = "The water is liquid.";
System.out.println(waterState);
}
else
{
waterState = "The water is solid.";
System.out.println(waterState);
}
}
else if (units.equals("M"))
{
if (temperature <= bpMeters)
{
waterState = "The water is solid.";
System.out.println(waterState);
}
else if (temperature > 0 && temperature < bpMeters)
{
waterState = "The water is liquid.";
System.out.println(waterState);
}
else
{
waterState = "The water is solid.";
System.out.println(waterState);
}
}
else
{
System.out.println("Error: must enter FT (feet) or M (meters)");
}
}
else
{
System.out.println("Error: must enter C (centigrade) or F (farenheit)");
}
return temperature + degrees + " " + altitude + units;
}
}
다음은이 클래스를 테스트하기 위해 사용했던 main 메소드가있는 클래스입니다.
당신은 계산을 확인해야합니다 :
public class WaterState
{
public static void main(String[] args)
{
Water timWater = new Water(-100, "C", 1000, "Ft");
String newWater = timWater.getState();
System.out.println(newWater);
}
}
당신은 [이 게시물을 게시하지 않았습니까?] (http://stackoverflow.com/q/24500517/2970947)? –
나는 당신이 전에 로직을 리뷰 한 후에, –
내가 그것을 검토했다고 여기기 전에 가정한다. 그게 내가 여기서 물어 보는 이유입니다. 분명히 내가 잃어버린 것/이해가 안되는 것이있다. – user3769297