[JAVA] 코딩 실습 (형변환)

Dawon Ruby Choi·2023년 8월 23일
0

Java

목록 보기
5/18
post-thumbnail

1-1)

-내가 작성한 코드

		System.out.println(iNum1/iNum2); //자동
		System.out.println((int)dNum); //강제
		
		System.out.println((double)iNum1); //강제라고 할 순 없음
		System.out.println(((double)iNum2)*dNum); // 강제
		
		System.out.println(dNum); 
		System.out.println((double)iNum1/iNum2); // 강제라고 할 순 없음
		
		System.out.println((int)fNum); // 강제
		System.out.println(((int)fNum)/iNum1); // 강제 
		
		System.out.println(((double)iNum1)/fNum); // 강제라고 할 순 없음
		System.out.println(); // 몰라
		
		System.out.println(ch); 
		System.out.println((int)ch);
		System.out.println(((int)ch)+iNum1);
		System.out.println(); // 몰라

-선생님이 작성하신 코드

        System.out.println(iNum1 / iNum2); // 2
        System.out.println((int)dNum); // 2
        
        System.out.println(iNum2 * dNum); // 10.0
        System.out.println((double)iNum1); // 10.0
        
        System.out.println(dNum); // 2.5
        System.out.println((double)iNum1/iNum2); // 2.5
        // System.out.println((double)(iNum1/iNum2)); // 2.0 ==> 이미 나눠진 몫을 가지고 double로 형변환 해서
        
        System.out.println((int)fNum); // 3
        System.out.println(iNum1 / (int)fNum); // 3

        System.out.println(iNum1/fNum);// 3.3333333
        System.out.println(iNum1/(double)fNum); // 3.3333333333333335
        
        System.out.println(ch); // 'A'
        System.out.println((int)ch); // 65
        System.out.println(ch + iNum1); // 75
        System.out.println((char)(ch+iNum1)); // 'K'

-선생님과 나와 다른 코드 비교하기

1) 10.0 출력
나 - System.out.println(((double)iNum2)dNum);
선생님 - System.out.println(iNum2
dNum);
▶ 자동 형변환을 해주는데 왜 굳이 저렇게 썼는지....

2) 3 출력
나 - System.out.println(((int)fNum)/iNum1);
선생님 - System.out.println(iNum1 / (int)fNum);
▶내가 앞 뒤 바꿔 썼음

3) 3.3333333 출력
정답 - System.out.println(iNum1/fNum);

4) 3.3333333333333335
정답 - System.out.println(iNum1/(double)fNum);
▶자릿수가 많다는건 더 정확하다는 뜻

5) 75 출력
정답 - System.out.println(ch + iNum1);

6) K 출력
정답 - System.out.println((char)(ch+iNum1));
▶char로 위에서 계산한 75 자체를 형변환 해주는 행위


1-2)

-내가 작성한 코드

package com.kh.practice2.func;

import java.util.Scanner;

public class CastingPractice2 {
	
	public void casting2 () {

		Scanner sc = new Scanner(System.in);
		System.out.print("국어 : ");
		double first = sc.nextDouble();
	
		System.out.print("영어 : ");
		double second = sc.nextDouble();
		
		System.out.print("수학 : ");
		double third = sc.nextDouble();
		
		int sum = (int)(first + second + third);
		int div = (int)((first + second + third)/3);
		
		System.out.println("총점 : " + sum);
	    System.out.println("평균 : " + div);
	}
}

-선생님이 작성하신 코드

package com.kh.practice2.func;

import java.util.Scanner;

public class CastingPractice2 {
	
	public void method() {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("국어 : ");
		double kor = sc.nextDouble();
		System.out.print("영어 : ");
		double eng = sc.nextDouble();
		System.out.print("수학 : ");
		double math = sc.nextDouble();
		
//		double sum = kor + eng + math;
//		double avg = sum / 3;
//		System.out.println("총점 : " + sum);
//		System.out.println("평균 : " + avg);
		int sum = (int)(kor + eng + math);
		int avg = sum / 3;
		System.out.println("총점 : " + sum);
		System.out.println("평균 : " + avg);
	}
	
	
}

1-3)

선생님이 작성하신 코드

package com.kh.practice2.func;

import java.util.Scanner;

public class CastingPractice1 {
	public void method() {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("문자 : ");
		char ch = sc.nextLine().charAt(0);
		System.out.println(ch + " unicode : " + (int)ch);
	}
}

문자열인 next나 nextLine 사용해야함

"unicode : " + (int)str"이 안되는 이유

string은 기본 자료형이 아닌 클래스 이기 때문에 형변환이 안됨

만일, String str = sc.nextLine();으로만 작성한다면 str안에 담긴 A를 숫자로 바꾸겠다. 라는 의미가 되어버리는데,
숫자 형태로 되어있는 문자열 외에 다른 것들은 숫자로 바꿀 수 가 없다 . 20, 100, -12 누가봐도 숫자 형태인 것 말고는 A나 띄어쓰기는 숫자로 바꿀 수 없는 형태이다.

그래서 char ch = str.charAt(0); 로 넣어준다.

system.out.println("unicode : " + ch")는 그대로 A가 나오기 때문에 마지막에 int 로 형변환만 해주면 된다.

profile
나의 코딩 다이어리🖥️👾✨

0개의 댓글