- 오랜만에 재개한 백준풀기.. 첫문제때 메인메소드 안썼다가 컴파일 에러 냄 ^^
- 처음에 입력받는 수를 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);
}
}
'언어 공부 내용 정리 > 백준' 카테고리의 다른 글
백준 자바 2884, 1152 / split() , StringTokenizer() 비교 (0) | 2023.06.09 |
---|---|
백준 자바 문자열 : 27866, 9086, 11654, 10809 (0) | 2023.06.05 |
백준 자바 10952,10951 (0) | 2023.05.24 |
백준 자바 10807, 10871, 10818, 10813 (0) | 2023.05.23 |
백준 자바 10172 (0) | 2023.05.18 |