언어 공부 내용 정리/백준

백준 자바 1008번

wosrn 2023. 5. 18. 19:56

  • 오랜만에 재개한 백준풀기.. 첫문제때 메인메소드 안썼다가 컴파일 에러 냄 ^^
  • 처음에 입력받는 수를 int로 했을때 뭔가 형변환을 해야할 것 같긴 한데 (double)(a/b)로 하니까 계속 1 3을 입력해도 0.0이 출력되어서 좀 생각하다가 서치를 해보았다
  • 서치 결과 내가 입력한 코드대로 하면 연산자의 우선순위에 따라 괄호 안의 (a/b)가 먼저 연산되어서 double(0)으로 만드는 꼴이라 0.3333이 아니라 0.0이 출력된 것이었다
  • double형의 새로운 변수를 선언하는 방법도 써봤으나 이것 역시 double c = a/b는 정수끼리 연산해서 나온 a/b의 결과를 c에 대입하는 것이기 때문에 어차피 1 3 입력시에 0.0이 나오는 건 똑같다

몇가지 방법이 있는데,

  • 1)(double)a/b로 a만 double형으로 형변환한다(그럼 b는 a와 연산하기 위해 자동 형변환이 일어나서 a와 b가 각각 double형으로 바뀐 뒤 연산이 일어나서 올바른 결과가 나온다
  • 애초에 입력받는 수를 double로 설정하면 별도의 형변환 없이도 가능하다 (왜 입력받는 수를 int로 못박았을까,,)
package Baekjoon;
import java.util.Scanner;

public class Main{
	
	public static void main(String args[]) {
    Scanner input = new Scanner(System.in);
    int a = input.nextInt();
    int b = input.nextInt();
    System.out.println((double)a/b);
    }
}