Q. 다음과 같은 숫자가 주어져 있을 때, 숫자를 계산(변형)하여 한국 나이를 계산하여 출력
(생년, 월, 일 정보도 같이 출력)
package decimal;
import java.lang.*;
public class test06 {
public static void main(String[] args) {
// 입력
int birth = 19990101;
// 처리
int year = birth / 10000;
int month = birth % 10000 / 100;
int day = birth % 10000 %100;
int today = 2021;
int age = 1 + today - year;
// 결과
System.out.println(year+"년");
System.out.println(month + "월 ");
System.out.println(day + "일");
System.out.println(age +"세");
}
}
- 정답
year = 1999년
month = 1월
day = 1일
age = 23세
자료형 - 실수
실수(부동소수점수)
1. 실수는 double 기본 형태이다.
2. 실수는 부정확하다. (각 형태마다 표현 가능한 자리수가 정해져 있다.)
3. 실수가 포함된 계산은 무조건 실수 결과가 나온다.
package realnumber;
import java.lang.*;
public class test01 {
public static void main(String[] args) {
//1
//float a = 1.5; X
float a = 1.5f;
double b = 1.5;
System.out.println(a);
System.out.println(b);
//2
float c = 123.12908309218940812904890128490812f;
double d = 123.12908309218940812904890128490812;
System.out.println(c);
System.out.println(d);
//3
System.out.println(1.5 + 2.5); //실수 + 실수 = 실수
System.out.println(10 / 3); //정수 + 정수 = 정수
System.out.println(10.0 / 3); //실수 + 정수 = 실수
}
}
- 정답
a = 1.5
b = 1.5
c = 123.12908
d= 123.1290830921894
4.0
3
3.3333333333333335
Q. 다음 주어진 국어점수, 영어점수, 수학점수를 이용하여 총점과 평균을 구하여 출력
국어 : 85점, 영어 : 90점, 수학 : 90점
package realnumber;
import java.lang.*;
public class test02 {
public static void main(String[] args) {
//입력
int korean = 85;
int english = 90;
int math = 90;
//처리
int sum = korean+english+math;
double avg = sum/3.0;
//출력
System.out.println("총점 = " + sum);
System.out.println("평균 = " + avg);
}
}
- 정답
총점 = 265
평균 = 88.33333333333333
Q. 고급 레스토랑에서 커플 스테이크 세트를 159000원에 주문하여 먹었습니다.
제휴카드를 사용하여 30% 할인을 받았습니다. 할인 후 금액을 구하여 출력하세요.
package realnumber;
import java.lang.*;
public class test03 {
public static void main(String[] args) {
//입력
int price = 159000; //결제금액
int rate = 30; //할인율
//처리
int total = price * (100-rate) /100;
//int result = price / 100 * (100*rate);
//나누기를 먼저하면 손실 발생 가능성 있음
//출력
System.out.println(total + "원");
}
}
자료형 - 정수와 실수간의 변환
1. 자료형에는 크기(범위)가 존재하며 크기(범위)가 작거나 다를 경우 변환이 어렵다
// float -> long 불가능, long -> float 가능, float > long 임을 알 수 있다.
package realnumber;
import java.lang.*;
public class test04 {
public static void main(String[] args) {
// byte는 int보다 작다.
byte a = 10;
int b = a; // (자동 형변환 - 묵시적 형변환) ,int b = (int) a; <- 이렇게 변환 안해도 된다.
System.out.println(b);
int c = 20;
//byte d = c; //될지 안될지 모르는 경우는 안되는 것으로 간주
byte d = (byte) c; // c의 데이터를 byte에 맞게 강제로 변환하여 넣어라 (강제 형변환 - 명시적 형변환)
System.out.println(d);
// float와 long 중에서 누가 더 큰 형태인지 코드를 통하여 증명
float e = 1.5f;
// long f = e; X
long f = (long)e; // 강제 형변환, 명시적 형변환
System.out.println(f);
long g = 10L;
float h = g; // 자동 형변환, 묵시적 형변환
System.out.println(h);
}
}
Q. BMI(체질량지수)는 다음과 같은 공식으로 계산 합니다.
예를 들어 키가 180cm, 체중이 80kg인 사람의 BMI를 계산하면 다음과 같습니다.
BMI = 80kg / (1.8m * 1.8m) = 24.69....
키 190cm, 체중 105kg인 사람의 BMI를 계산하여 출력하세요
package realnumber;
import java.lang.*;
public class test06 {
public static void main(String[] args) {
//입력
int height = 190;
int weigh = 105;
//처리
double m = (double) height /100;
double bmi = weigh / (m * m);
//출력
System.out.println(bmi);
}
}
- 정답
bmi = 29.085872576177287
자료형 - 논리
true(예) or false(아니요)
컴퓨터로 하여금 판정을 내리게 하는 효과
- 숫자형 질문
100 더하기 200은 얼마 인가요?
- 논리형 질문
100 더하기 200이 300보다 큽니까?
Q : 시내 과속방지 카메라는 어떤 원리로 작동하게 되는가?
package logical;
import java.lang.*;
public class test01 {
public static void main(String[] args) {
//입력
int speed = 30;
int speed2 = 55;
//처리 - 과속인지 아닌지 판정(50km 이상일 경우 과속)
System.out.println(speed >= 50); //false
System.out.println(speed2 >= 50); //true
}
}
- 정답
speed = false
speed2 = true
논리형 boolean 알아보기
package logical;
import java.lang.*;
public class test02 {
public static void main(String[] args) {
// 논리형 데이터 저장
// boolean a = true or false 만 가능
boolean a = true;
boolean b = 50 > 30;
System.out.println(b);
int speed = 60;
boolean speeding = speed > 50;
System.out.println(speeding);
}
}
- 정답
b = true
speeding = true
Q. 2005년생의 나이를 계산하여 출력하고, 성인인지 판정하여 출력
성인은 20살 이상인 사람을 의미합니다.
package logical;
import java.lang.*;
public class test03 {
public static void main(String[] args) {
//입력
int birth = 2005;
//처리
int thisyear = 2021;
int age = thisyear-birth+1;
boolean adult = age >= 20 ;
//출력
System.out.println(age);
System.out.println(adult);
}
}
- 정답
age = 17
adult = false
Q. 과속단속 카메라는 제한속도에서 10%의 여유치를 가지고 작동합니다.
제한속도가 100km인 도로에 설치된 과속단속 카메라가 있을 때
109km로 달리고 있는 자동차가 과속인지 아닌지 판정하여 출력하세요.
package logical;
import java.lang.*;
public class test04 {
public static void main(String[] args) {
//입력
int speed = 109;
int limit = 100;
int permit = 10; //여유치(%)
//처리
int fixLimit = limit * (100+permit) / 100; // 여유치합산
boolean over = speed > fixLimit;
//출력
System.out.println(fixLimit);
System.out.println(over);
}
}
- 정답
fixLimit = 110
over = false
같다(==), 다르다(!=) 알아보기
package logical;
import java.lang.*;
public class test05 {
public static void main(String[] args) {
//같다, 다르다
int n = 12345;
//잘못된 식 : n에 12345 넣고 출력하세요(사용하지 않는 형태의 식)
//System.out.println(n = 12345);
//올바른 식 : n의 값이 12345와 같습니까?
System.out.println(n == 12345);
//올바른 식 : n의 값이 12121이 아닙니까?
System.out.println(n != 12121);
//활용 : n이 짝수 입니까?
// = n을 2로 나눈 나머지가 0과 같습니까?
//System.out.println(n % 2 == 0 );
boolean even = n % 2 == 0;
System.out.println(even);
}
}
문자와 문자열
Q : 자바에서 글자는 어떻게 취급되는가?
A : 자바는 1글자에 2byte 형태로 관리합니다.
= 글자마다 숫자가 할당되어 있으며, 원한다면 언제든지 확인할 수 있습니다.
package character;
import java.lang.*;
public class test01 {
public static void main(String[] args) {
char a = '가';
System.out.println(a);
char b = 44032;
System.out.println(b);
System.out.println((int)b);
int c = a;
System.out.println(c);
// ' 처럼 기호와 겹쳐서 사용이 어려운 글자들은 앞에 \를 추가하여 글자임을 명시
// = Escape sequence = 이스케이프 문자
char d = '\'';
System.out.println(d);
}
}
- 정답
a = 가
b = 가
b = 44032
c = 44032
d = '
문자열 (String)
- 문자가 줄지어 있는 형태의 데이터
- 프로그래밍에서 가장 중요한 데이터 중 하나
- 쌍따옴표로 감싸서 표기
참조형 데이터 (Reference Type)
- 복잡한 데이터(객체)에 리모컨(참조변수)을 연결해놓은 형태
- 리모컨(참조변수)을 이용하여 다양한 버튼(기능)을 실행할 수 있다.
package character;
import java.lang.*;
public class test02 {
public static void main(String[] args) {
// 문자열 (String)
String a = "hello";
System.out.println(a);
//참조형 데이터 (Reference Type)
System.out.println(a.length()); //a의 글자수
System.out.println(a.charAt(0)); //a의 +0지점 위치의 글자
}
}
- 정답
a = hello
a.length = 5
a.charAt(0) = h
문자열의 특징
1. (원래 안되는건데 특별히) 덧셈만 가능하다
= 어떠한 형태와 더해도 결과가 문자열로 나온다
2. 문자열에서 정상적으로 출력되지 않는 글자들이 있다.
= 특수한 형태를 표현하기 위한 글자
-> \n (New Line, 개행) - 다음 행으로 이동
-> \t (Tab, 탭) - 다음 탭으로 이동
-> \r (caRriage return) - 첫 칸으로 이동
-> \", \', \\
package character;
import java.lang.*;
public class test03 {
public static void main(String[] args) {
System.out.println("안녕하세요" + 1); // 안녕하세요1
System.out.println("안녕하세요" + 1 + 2); // 안녕하세요12
int a = 10;
int b = 20;
System.out.println("a = " + a);
System.out.println("b = " + b);
//System.out.println("합계 = " + a + b); -> 왼쪽부터 계산 문자열로 인식
int total = a+b;
System.out.println("합계 = " + total);
//2
//나는 지금 "피자"가 먹고싶다
String str = "나는 지금 \"피자\"가 먹고싶다";
System.out.println(str);
String str2 = "안녕\t하세요"; //TAB키 쓰는법
System.out.println(str2);
String str3 = "안\n녕\n하\n세\n요"; //ENTER키 쓰는법
System.out.println(str3);
String str4 = "C:\\java";
System.out.println(str4);
}
}
- 정답
안녕하세요1
안녕하세요12
a = 10
b = 20
합계 = 30
나는 지금 "피자"가 먹고싶다
안녕 하세요
안
녕
하
세
요
C:\java
'Java 웹 개발' 카테고리의 다른 글
21.08.19 - 웹 개발 입문 7일차 (0) | 2021.08.19 |
---|---|
21.08.18 - 웹 개발 입문 6일차 (0) | 2021.08.18 |
21.08.16 - 웹 개발 입문 4일차 (0) | 2021.08.16 |
21.08.13 - 웹 개발 입문 3일차 (0) | 2021.08.13 |
21.08.12 - 웹 개발 입문 2일차 (0) | 2021.08.12 |