2017-01-25 2 views
2

CelsiusToFahrenheit.java 파일에서 main() 클래스를 통해 프로그램을 실행하려고합니다. CelsiusToFahrenheit라는 공용 클래스를 만들었고 클래스가 "double"유형의 매개 변수를 받으면 해당 입력을 받아 섭씨 숫자를 화씨로 변환하는 알고리즘을 통해이를 실행해야합니다. 코드를 컴파일하고 정수를 입력하면 출력에 tempOutput에 할당 된 알고리즘이 반영되지 않습니다. 1.8을 곱 tempC 후 32을 추가하는데 상기 가변 출력 tempC + tempC 32Java 프로그램이 정확한 정수 값을 출력하지 않습니다.

import java.util.Scanner; 

public class CelsiusToFahrenheit { 
    public static double convertCelsiusToFahrenheit(double tempInput) { 
     double tempOutput = 0.0; 
     tempOutput = (tempInput * (9/5)) + 32; 
     return tempOutput; 
} 


    public static void main (String [] args) { 
     Scanner scnr = new Scanner(System.in); 
     double tempF = 0.0; 
     double tempC = 0.0; 

     System.out.println("Enter temperature in Celsius: "); 
     tempC = scnr.nextDouble(); 

     tempF = convertCelsiusToFahrenheit(tempC); 

     System.out.print("Fahrenheit: "); 
     System.out.println(tempF); 

     scnr.close(); 

     return; 
    } 
} 

상관 주어진 번호 I 입력 : 다음 코드이다. 내가 어디서 잘못 됐어?

+0

그러나 이것은'('')' – AxelH

답변

3

tempOutput = (tempInput * (9/5)) + 32;-9/5=1 왜냐하면 정수형이기 때문입니다. 플로트 분할을 사용하는 경우 9/5.0 또는 (tempInput * 9/5) + 32;을 사용할 수 있습니다. 두 번째 방법은 Java가 오른쪽에서 왼쪽이고 double*intdouble이 될 것이고 double/int이 float division을 사용할 것이기 때문입니다.

또한 CelsiusToFahrenheit 대신 TemperatureConverter이라고하는 클래스를 추가해야합니다. 왜? 당신의 현재 이름이 당신을 개선하기 때문에 닫힙니다. 나중에이 클래스에 farenheitToCelsius을 구현하면 안됩니다.

+1

을 사용했기 때문에 이산 적입니다. 그렇지 않으면'('''')을 제거하십시오. 'double * int/int'연산은 괜찮을 것이다. 추신 : 어제 JLS 참조를 사용하여 복제본에 대한 답변을 추가하여이 작업 방법을 설명했습니다. 내가 생각하기에 이것에 대한 개선을위한 힌트가 필요하다. – AxelH