본문 바로가기

Java/실습

[Java] 명시적 형 변환과 Math기능을 실습을 통해 배워보자

import java.util.Scanner;

 

public class KIMain2 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("국어는 몇점?");

int Korean_score = sc.nextInt();

System.out.println("수학은 몇점?");

int Math_score = sc.nextInt();

System.out.println("영어는 몇점?");

int English_score = sc.nextInt();

int score = Korean_score + Math_score + English_score;

int avg = score / 3;

 

System.out.printf("국어는 %d점\n", Korean_score);

System.out.printf("수학은 %d점\n", Math_score);

System.out.printf("영어는 %d점\n", English_score);

System.out.printf("총합은 %d점\n", score);

System.out.printf("평균은 %.1f점\n", (double)avg);

 

}

}

 

 

오늘은 먼저 Scanner 연습을 위한 실습을 해보았습니다.

 

세가지 과목을 입력받아서 과목 점수의 총합을 구하고

 

평균을 구해서 출력하는 간단한 실습이었습니다.

 

여기서 추가로 배운 점은 명시적 형 변환 문법인데

 

자료형이 다른 데이터를 출력하려고 할 때

 

(다른 자료형) 변수이름을 입력하면

 

해당 자료형으로 출력할 수 있다는 기능입니다.

 

예를들어, 위에처럼

 

avg는 int 자료형이었는데

 

(double) 을 사용해서

 

실수로 출력할 수 있습니다.

 

국어는 몇점?

100

수학은 몇점?

90

영어는 몇점?

80

국어는 100점

수학은 90점

영어는 80점

총합은 270점

평균은 90.0점

 

△ 출력 내용

 

 

 

import java.util.Scanner;

 

public class KIMain3 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("반지름은 몇cm?");

double radious = sc.nextDouble();

double radious_size = radious*radious*3.14;

System.out.println("가로는 몇cm?");

int width = sc.nextInt();

System.out.println("세로는 몇cm?");

int length = sc.nextInt();

int rectangular = width * length;

 

System.out.println("몇초?");

int second = sc.nextInt();

int time = second / 3600;

int minute = (second - (time * 3600))/60;

int final_second = (second - (time *3600)) - (minute * 60);

System.out.printf("원의 면적은 %.1f㎤\n", radious_size);

System.out.printf("직사각형의 면적은 %d㎝\n", rectangular);

System.out.printf("시간은 %d시간 %d분 %d초\n", time, minute, final_second);

 

 

 

 

}

}

 

 

다음 실습은

 

1.원의 반지름을 입력 받아서 원의 면적을 구하고

 

2. 가로 세로를 입력받아서 사각형의 면적을 구하고

 

3. 초를 입력받아서 시간 단위로 나누는 것

 

입니다.

 

먼저 초등학교 때의 기억을 떠올리며 

 

 

 

원의 면적 = 반지름 * 반지름 * 3.14를 떠올렸고,

 

그대로 입력받은 반지름을 집어 넣어주면 됩니다.

 

하지만 자바에는 Math라는 도구가 존재합니다.

 

double radious_size (Math.PI * Math.pow(radius, 2));

 

Math.PI를 이용해 파이를 대체할 수 있고,

 

Math.pow라는 함수를 사용해서 제곱을 할 수 있습니다.

 

 

 

사각형의 면적은 가로 * 세로이므로

 

입력받은 가로와 세로만 곱해주면 됩니다.

 

 

 

문제는 입력받은 초를 시간 단위로 나누는 것인데

 

먼저 입력받은 초를 3600으로 나누어 시간을 구해줍니다.

 

분을 구하려면 시간만큼의 분을 제외시켜야 하므로

 

입력받은 초에서 (시간 * 3600) 만큼을 뺀 값에

 

60을 나눠서 분을 구해줍니다.

 

초는 더하여 입력받은 시간과 분만큼을 제외한 초이기 떄문에

 

입력받은 초 - ((시간 * 3600) - (분 *60)) 을 해주어 구할 수 있습니다.

 

 

점심시간 전에 마지막 실습을 했는데

 

public class KIMain4 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

 

 

System.out.println("자장면은 얼마?");

int jjm = sc.nextInt();

System.out.println("짬뽕은 얼마?");

int jbb = sc.nextInt();

System.out.println("탕수육은 얼마?");

int tsy = sc.nextInt();

System.out.println("양장피는 얼마?");

int yjp = sc.nextInt();

System.out.println("군만두는 얼마?");

int kmd = sc.nextInt();

System.out.println("크림새우는 얼마?");

int krsw= sc.nextInt();

 

System.out.println("=======================");

System.out.println("중국집에 오신 것을 환영합니다!");

System.out.println("=======================");

System.out.printf("┌ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┐\n" );

System.out.printf("|짜장면 : " + "%d원 |\n", jjm);

System.out.printf("|짬뽕 : " + "%d원 |\n", jbb);

System.out.printf("|탕수육 : " + "%d원 |\n", tsy);

System.out.printf("|군만두 : " + "%d원 |\n" , kmd);

System.out.printf("|양장피 : " + "%d원 |\n", yjp);

System.out.printf("|크림새우 : " + "%d원 |\n", krsw);

System.out.printf("└ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┘");

 

}

}

 

각 메뉴들의 가격을 입력받아서 메뉴판을 만드는 실습이었습니다.

 

=======================

중국집에 오신 것을 환영합니다!

=======================

┌ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┐

|짜장면 : 5000원 |

|짬뽕 : 7000원 |

|탕수육 : 15000원 |

|군만두 : 7000원 |

|양장피 : 25000원 |

|크림새우 : 20000원 |

└ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ┘

 

나름 메뉴판같이 생겨서 만족하네요 : )

 

다음 학습진행 후 실습 리뷰로 돌아오겠습니다!