2014-07-01 3 views
0

섭씨 또는 화씨에서의 온도 입력과 피트 또는 미터로 고도를 입력하여 고체, 액체 또는 가스의 물 상태를 계산해야합니다.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); 

    } 
} 
+0

당신은 [이 게시물을 게시하지 않았습니까?] (http://stackoverflow.com/q/24500517/2970947)? –

+0

나는 당신이 전에 로직을 리뷰 한 후에, –

+0

내가 그것을 검토했다고 여기기 전에 가정한다. 그게 내가 여기서 물어 보는 이유입니다. 분명히 내가 잃어버린 것/이해가 안되는 것이있다. – user3769297

답변

1

문제 영역은 다음과 같은 코드입니다. 당신이 비교 if (temperature >= bpFeet)을하고 따라서 때

bpFeet = temperature - (altitude * 0.001); // boiling point given an altitude in feet 
     bpMeters = temperature - (altitude * 0.01); // boiling point given an altitude in meters 

는 상관없이 온도에 넣어 게다가, bpFeet 항상 항상 따라서 가스와 물 만들기 true를 돌려줍니다 덜 수 없습니다.

+0

도움에 감사드립니다. 사실 더 일찍 깨달았 어. 나는 주석을 달았지만 아마도 대답으로 넣어야 만했을 것이다. – user3769297

+0

'degrees degrees.equals ("C")'를 추가하고 섭씨로 표시되는 끓는점 변수와 F와 그냥 비슷한 것을 추가하면된다. 온도 대신에 사용하십시오. –

관련 문제