[JAVA] 타입 에러, printf()

Coastby·2022년 7월 22일
0

JAVA

목록 보기
4/33

○ 타입 에러

  • 나눗셈 연산 주의 : int와 int의 연산 결과는 int가 된다. (double 타입에 대입이 되어도 정수로 연산되어 정수로 값이 반환된 다음 실수로 바뀐다)
    • double과 int 의 연산은 double이다.
    • 숫자 타입 사이에서는 캐스팅이 가능하며, 숫자간 연산은 더 큰 타입을 따른다. (byte(1) < short (2) < int (4) < long(8) < float < double)
double a = 5.0 / 2.0 // 2.5
double aa = 5 / 2    // 2.0
int b = 4 / 2        // 2
int c = 5 / 2        // 2.5 (x) ==> 2 (o)
  • 타입 불일치 주의 : 값과 타입이 일치하지 않으면 에러가 난다.
  • 형변환 주의
    • 자동 변환 (implicit conversion): 자동 변환이 되는 경우에는 문제가 발생하지 않는다. 이러한 자동 변환은 더 큰 타입으로 대입 시 발생한다.

      // 자동 변환 (더 큰 타입으로 대입될 때)
      double p = 2;  // 2 => 2.0
      int n = 5 / 2; // 2
      double q = n;  // 2 => 2.0
    • 직접 변환 (explicit conversion): double은 int에 대입될 수 없다. 강제로 소수점을 버리고 정수로 만들 수는 있다. 이러한 문법을 캐스팅 (casting)이라고 한다.

      // 에러 발생
      int r = 10.4; // ERROR
      // 실수를 정수로 강제 캐스팅
      int r = (int) 10.4; // 10.4 => 10

○ printf() 메소드

  • %d : 문자열 사이에 정수를 삽입하고 싶을 때
int age = 4;
System.out.printf("훈이는 나이는 %d세입니다.", age);
  • 여러개의 정수 출력하기
int age = 4;
int tail = 1;

System.out.printf("훈이의 나이는 %d이고, 꼬리는 %d개 입니다.", age, tail);

//출력
훈이의 나이는 4이고, 꼬리는 1개 입니다.
  • %f : 실수형 변수 출력

    • 소수점 이하 자릿 수 설정

      // 소수점 이하 2자리까지 출력 => 3.14
      double pi = 3.14159265;
      System.out.printf("%.2f\n", pi);
      
      // 소수점 이하 5자리까지 출력 => 3.14159
      double pi = 3.14159265;
      System.out.printf("%.5f\n", pi);
  • %s : 문자열 변수 출력

  • \n : 줄 내림. 엔터 효과가 필요할 때 사용, printf()는 줄내림 효과가 기본으로 없음

  • (int) : 캐스팅, 실수를 정수로 강제 변환하기

int a = (int) 10.4; // a = 10
  • 실수형 변수 앞에 (int)를 붙여서 캐스팅 가능
double weight = 7.5;

System.out.printf("몸무게 : %dkg", (int) weight);
//출력
몸무게 : 7kg
  • 삽입되는 타입이 달라도 섞어서 쓸 수 있음
public class plus {
	public static void main(String[] args) {
		String strSeven = "7";
		String strPi = "3.14";

		//형변환
		int a = Integer.parseInt(strSeven);
		double b = Double.parseDouble(strPi);

		//숫자 연산
		double c = a + b;

		//출력
		System.out.printf("%d + %.2f = %.2f", a, b, c);
	}
}

//출력 
7 + 3.14 = 10.14

👉 Math 클래스 : 수학에서 사용되는 변수 및 함수들을 제공한다.

// 원주율 - Math.PI
double pi = Math.PI; // 3.14159265..
// 절대값 - Math.abs();
double x = Math.abs(-9.81); // 9.81
// 반올림 - Math.round();
long n = Math.round(10.6); // 11

○ 연습 문제

public class round {
  public static void main (String[] args) {
    double r = Double.parseDouble(args[0]);
    double pie = Math.PI;
    double S = pie * r * r;
    
    System.out.printf("반지름이 %.0f인 원의 넓이 => %.3f", r, S);
  }
}

👉 오류

  • 변수 타입을 또 안 적음
  • 소수점 설정을 안 함
profile
훈이야 화이팅

0개의 댓글