728x90
수업내용
1교시 (09:30-10:20)
- 지난 시간 복습
java.lang.Math 클래스
숫자, 수학 관련 클래스이다.
함수가 static이다.
random(), 배열, for문
로또 번호
1. 난수로 번호 생성 : Math.random()
2. 번호를 6개 만들기 : 배열, for
2.1 중복 제가 : 배열, for 문의 index, 증감 연산자, 배열의 데이터 key=value 인덱스=값
3. 6개 번호를 5개 만들기 : for
4. 문자 만들기 A : char 문자이면서 숫자 증감연산자
5. 자동, 수동 붙이기 : 배열, 문자열을 초기화해서 사용하는 방법
6. 자리수 맞추기 : 문자열의 길이를 체크
2교시 (10:30-11:20)
- Exam_Math_9
package a.b.c.ch5;
import java.math.BigDecimal;
public class Exam_Math_9 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 오버 플로우
// 자바 int 형 : 4byte : 32bit : 2,147,483,647
// 2,500,000,000
// z >>> : -1,794,967,296
int x = 50000;
int y = 50000;
int z = x * y;
System.out.println("z >>> : " + z);
// 9,223,372,036,854,775,807L
long x1 = 50000;
long y1 = 50000;
long z1 = x1 * y1;
System.out.println("z1 >>> : " + z1);
// 부동 소수점 오류
int x2 = 1;
double y2 = 0.1;
int num = 7;
double z2 = x2 - num * y2; // 0.3
System.out.println("z2 >>> : " + z2);
// z2 >>> : 0.29999999999999993
int x3 = 1;
double y3 = x3* 10;
int num1 = 7;
double z3 = (y3-num1) / 10.0;
System.out.println("z3 >>> : " + z3); // 0.3
// java.math.BigDecimal
// java.math.BigDecimal.add(BigDeciaml augend) : 덧셈 연산
// java.math.BigDecimal.subtract(BigDecimal subtranhend) : 뺄셈 연산
// java.math.BigDecimal.multiply(BigDecimal multiplicand) : 곱셈 연산
// java.math.BigDecimal.devide(BigDecimal divisor) : 나눗셈 연산
// java.math.BigDecimal.remainder(BigDecimal divisor) : 나머지 연산
BigDecimal b1 = BigDecimal.valueOf(1);
BigDecimal b2 = BigDecimal.valueOf(0.7);
System.out.println("b1.subtract(b2) >>> : " + b1.subtract(b2));
}
}
- Exam_Math_10
package a.b.c.ch5;
import java.math.BigDecimal;
public class Exam_Math_10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// double x = 1.12345678922222;
// double y = 1.2343456789111;
String x = "1.12345678922222";
String y = "1.2343456789111";
// 빅데시말 사용할 때 문자숫자로 초기화해야 한다.
// 숫자로 초기화하면 형변환이 생기는 경우 연산이 잘못될 가능성이 있다.
// BigDecimal b1 = new BigDecimal("1.12345678922222");
// BigDecimal b2 = new BigDecimal("1.2343456789111");
BigDecimal b1 = new BigDecimal(x);
// BigDecimal b1 = new BigDecimal(String.valueOf(x));
System.out.println("b1 >>> : " + b1);
BigDecimal b2 = new BigDecimal(y);
// BigDecimal b2 = new BigDecimal(String.valueOf(x));
System.out.println("b2 >>> : " + b2);
// public BigDecimal add(BigDecimal augend)
// 더하기
BigDecimal badd = b1.add(b2);
System.out.println("badd >>> : " + badd);
/*
double x = 1.12345678922222;
double y = 1.2343456789111;
b1 >>> : 1.12345678922222003137676438200287520885467529296875
b2 >>> : 1.23434567891110003046151177841238677501678466796875
badd >>> : 2.35780246813332006183827616041526198387145996093750
String x = "1.12345678922222";
String y = "1.2343456789111";
b1 >>> : 1.12345678922222
b2 >>> : 1.2343456789111
badd >>> : 2.35780246813332
*/
// public BigDecimal setScale(int newScale, int roundingMode)
badd = badd.setScale(3, BigDecimal.ROUND_DOWN);
System.out.println("badd >>> : " + badd);
// 빼기
BigDecimal bsub= b1.subtract(b2);
System.out.println("bsub >>> : " + bsub);
bsub = bsub.setScale(3, BigDecimal.ROUND_HALF_EVEN);
System.out.println("bsub >>> : " + bsub);
// 곱하기
BigDecimal bmul = b1.multiply(b2);
System.out.println("bmul >>> : " + bmul);
bmul = bmul.setScale(3, BigDecimal.ROUND_DOWN);
System.out.println("bmul >>> : " + bmul);
// 나누기
// BigDecimal bdiv = b1.divide(b2);
BigDecimal bdiv = b1.divide(b2, 3, BigDecimal.ROUND_DOWN);
System.out.println("bdiv >>> : " + bdiv);
// bdiv = bdiv.setScale(3, BigDecimal.ROUND_DOWN;
// System.out.println("bdiv >>> : " + bdiv);
}
}
3교시 (11:30-12:20)
- 사칙연산을 하는 계산기 만들기 (미완성)
package a.b.c.ch5;
import java.math.BigDecimal;
public class Exam_Math_10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// double x = 1.12345678922222;
// double y = 1.2343456789111;
String x = "1.12345678922222";
String y = "1.2343456789111";
// 빅데시말 사용할 때 문자숫자로 초기화해야 한다.
// 숫자로 초기화하면 형변환이 생기는 경우 연산이 잘못될 가능성이 있다.
// BigDecimal b1 = new BigDecimal("1.12345678922222");
// BigDecimal b2 = new BigDecimal("1.2343456789111");
BigDecimal b1 = new BigDecimal(x);
// BigDecimal b1 = new BigDecimal(String.valueOf(x));
System.out.println("b1 >>> : " + b1);
BigDecimal b2 = new BigDecimal(y);
// BigDecimal b2 = new BigDecimal(String.valueOf(x));
System.out.println("b2 >>> : " + b2);
// public BigDecimal add(BigDecimal augend)
// 더하기
BigDecimal badd = b1.add(b2);
System.out.println("badd >>> : " + badd);
/*
double x = 1.12345678922222;
double y = 1.2343456789111;
b1 >>> : 1.12345678922222003137676438200287520885467529296875
b2 >>> : 1.23434567891110003046151177841238677501678466796875
badd >>> : 2.35780246813332006183827616041526198387145996093750
String x = "1.12345678922222";
String y = "1.2343456789111";
b1 >>> : 1.12345678922222
b2 >>> : 1.2343456789111
badd >>> : 2.35780246813332
*/
// public BigDecimal setScale(int newScale, int roundingMode)
badd = badd.setScale(3, BigDecimal.ROUND_DOWN);
System.out.println("badd >>> : " + badd);
// 빼기
BigDecimal bsub= b1.subtract(b2);
System.out.println("bsub >>> : " + bsub);
bsub = bsub.setScale(3, BigDecimal.ROUND_HALF_EVEN);
System.out.println("bsub >>> : " + bsub);
// 곱하기
BigDecimal bmul = b1.multiply(b2);
System.out.println("bmul >>> : " + bmul);
bmul = bmul.setScale(3, BigDecimal.ROUND_DOWN);
System.out.println("bmul >>> : " + bmul);
// 나누기
// BigDecimal bdiv = b1.divide(b2);
BigDecimal bdiv = b1.divide(b2, 3, BigDecimal.ROUND_DOWN);
System.out.println("bdiv >>> : " + bdiv);
// bdiv = bdiv.setScale(3, BigDecimal.ROUND_DOWN;
// System.out.println("bdiv >>> : " + bdiv);
}
}
4교시 (12:30-13:20)
- 사칙연산을 하는 계산기 만들기 (계속)
- 선생님이 주신 참조용 코드 KM_Calcu
package a.b.c.ch5;
// 요구사항
/*
1. 사칙연산: + - * /
2. BigDecimal 사용
3. 각 연산은 함수 구현, 함수 이름은 본인이 만들어 보기
4. 연산 결과는 main 함수에서 콘솔에 출력하기
5. 입력은 Scanner 클래스 사용
*/
import java.util.Scanner;
public class KSY_Calcu {
public int adder(int x, int y) {
return x + y;
}
public int subtractor(int x, int y) {
return x - y;
}
public int multiplyer(int x, int y) {
return x * y;
}
public int divider(int x, int y) {
return x / y;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
KSY_Calcu kc = new KSY_Calcu();
System.out.println(" 계산기 시작 ");
while (true) {
System.out.println("연산 방법을 입력하세요.");
System.out.println("A 더하기 S 빼기 M 곱하기 D 나누기 X 종료");
Scanner sc = new Scanner(System.in);
String input = sc.next();
input.toUpperCase();
if (input == "A") {
System.out.println("계산하고자 하는 첫번째 수를 입력하세요")
int x = sc.nextInt();
System.out.println("계산하고자 하는 두번째 수를 입력하세요")
int y = sc.nextInt();
System.out.println("정답은 " + kc.adder(x, y) + " 입니다.");
} else if (input == "S") {
System.out.println("계산하고자 하는 첫번째 수를 입력하세요")
int x = sc.nextInt();
System.out.println("계산하고자 하는 두번째 수를 입력하세요")
int y = sc.nextInt();
System.out.println("정답은 " + kc.subtractor(x, y) + " 입니다.");
} else if (input == "M") {
System.out.println("계산하고자 하는 첫번째 수를 입력하세요")
int x = sc.nextInt();
System.out.println("계산하고자 하는 두번째 수를 입력하세요")
int y = sc.nextInt();
System.out.println("정답은 " + kc.multiplyer(x, y) + " 입니다.");
} else if (input == "D") {
System.out.println("계산하고자 하는 첫번째 수를 입력하세요")
int x = sc.nextInt();
System.out.println("계산하고자 하는 두번째 수를 입력하세요")
int y = sc.nextInt();
System.out.println("정답은 " + kc.divider(x, y) + " 입니다.");
} else if (input == "X") {
break;
}
sc.close();
} // end of while()
} // end of main()
} // end of KSY_Calcu class
- 선생님이 주신 참조용 코드 KM_Calcu_1
package a.b.c.ch5;
import java.math.BigDecimal;
import java.util.Scanner;
// 요구사항
/*
1. 사칙연산 : + - * /
2. BicDecimal 사용
3. 각 연산은 함수 구현, 함수 이름은 본인 만들어 보기
4. 연산 결과는 main 함수에서 콘솔에 출력하기
5. 입력은 Scanner 클래스 사용
13:00 까지 만들기
*/
public class KM_Calcu {
public BigDecimal kmAdd(String x, String y) {
BigDecimal b1 = new BigDecimal(x);
BigDecimal b2 = new BigDecimal(y);
BigDecimal badd = b1.add(b2);
return badd;
}
public BigDecimal kmSubtract(String x, String y) {
BigDecimal b1 = new BigDecimal(x);
BigDecimal b2 = new BigDecimal(y);
BigDecimal bsubtract = b1.subtract(b2);
return bsubtract;
}
public BigDecimal kmMultiply(String x, String y) {
BigDecimal b1 = new BigDecimal(x);
BigDecimal b2 = new BigDecimal(y);
BigDecimal bmultiply = b1.multiply(b2);
return bmultiply;
}
public BigDecimal kmDivide(String x, String y) {
BigDecimal b1 = new BigDecimal(x);
BigDecimal b2 = new BigDecimal(y);
BigDecimal bdivide = b1.divide(b2);
return bdivide;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = null;
String x = "";
String y = "";
String oper = "";
char cOper = '\u0000';
try {
sc = new Scanner(System.in);
System.out.println("연산할 x 값을 입력하시오 >>> : ");
x = sc.next();
System.out.println("x >>> : " + x);
System.out.println("연산할 y 값을 입력하시오 >>> : ");
y = sc.next();
System.out.println("y >>> : " + y);
System.out.println("연산할 연산자를 + - * / 입력하시오 >>> : ");
oper = sc.next();
cOper = oper.charAt(0);
System.out.println("cOper >>> : " + cOper);
if (0x2B == cOper) {
// +
System.out.println("연산할 연산자는>>> : " + cOper);
KM_Calcu km_add = new KM_Calcu();
BigDecimal badd = km_add.kmAdd(x, y);
System.out.println(x + " + " + y + " = " + badd);
}
if (0x2D == cOper) {
// -
System.out.println("연산할 연산자는>>> : " + cOper);
KM_Calcu km_sub = new KM_Calcu();
BigDecimal bsubtract= km_sub.kmSubtract(x, y);
System.out.println(x + " - " + y + " = " + bsubtract);
}
if (0x2A == cOper) {
// *
System.out.println("연산할 연산자는>>> : " + cOper);
KM_Calcu km_mul = new KM_Calcu();
BigDecimal bmultiply = km_mul.kmMultiply(x, y);
System.out.println(x + " * " + y + " = " + bmultiply);
}
if (0x2F == cOper) {
// /
System.out.println("연산할 연산자는>>> : " + cOper);
KM_Calcu km_div = new KM_Calcu();
BigDecimal bdivide = km_div.kmDivide(x, y);
System.out.println(x + " / " + y + " = " + bdivide);
}
sc.close();
}catch(Exception e) {
System.out.println("에러가 >>> : " + e.getMessage());
}finally {
if (sc !=null) {
sc.close();
}
}
}
}
5교시 (14:30-15:20)
- 사칙연산을 하는 계산기 만들기 (계속) - 완성한 코드
package a.b.c.ch5;
// 요구사항
/*
1. 사칙연산: + - * /
2. BigDecimal 사용
3. 각 연산은 함수 구현, 함수 이름은 본인이 만들어 보기
4. 연산 결과는 main 함수에서 콘솔에 출력하기
5. 입력은 Scanner 클래스 사용
*/
import java.util.Scanner;
import java.math.BigDecimal;
public class KSY_Calcu {
public BigDecimal adder(String x, String y) {
BigDecimal x1 = new BigDecimal(x);
BigDecimal y1 = new BigDecimal(y);
BigDecimal added = x1.add(y1);
return added;
}
public BigDecimal subtractor(String x, String y) {
BigDecimal x1 = new BigDecimal(x);
BigDecimal y1 = new BigDecimal(y);
BigDecimal subtracted = x1.subtract(y1);
return subtracted;
}
public BigDecimal multiplyer(String x, String y) {
BigDecimal x1 = new BigDecimal(x);
BigDecimal y1 = new BigDecimal(y);
BigDecimal multiplyed = x1.multiply(y1);
return multiplyed;
}
public BigDecimal divider(String x, String y) {
BigDecimal x1 = new BigDecimal(x);
BigDecimal y1 = new BigDecimal(y);
BigDecimal divided = x1.divide(y1);
return divided;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("== 계산기를 시작합니다 ==");
while (true) {
System.out.println();
System.out.println("연산 방법을 입력하세요.");
System.out.println("A 더하기 S 빼기 M 곱하기 D 나누기 X 계산기 종료");
String input = "";
Scanner sc = new Scanner(System.in);
input = sc.next().toUpperCase();
// System.out.println("input : " + input);
if (input.equals("A")) {
KSY_Calcu kc_add = new KSY_Calcu();
System.out.println("== 더하기 연산==");
System.out.println("계산하고자 하는 첫번째 수를 입력하세요");
String x = sc.next();
System.out.println("계산하고자 하는 두번째 수를 입력하세요");
String y = sc.next();
BigDecimal answer_add = kc_add.adder(x, y);
System.out.println("정답은 " + answer_add + "입니다.");
} else if (input.equals("S")) {
System.out.println("== 빼기 연산==");
KSY_Calcu kc_substract = new KSY_Calcu();
System.out.println("계산하고자 하는 첫번째 수를 입력하세요");
String x = sc.next();
System.out.println("계산하고자 하는 두번째 수를 입력하세요");
String y = sc.next();
BigDecimal answer_sub = kc_substract.subtractor(x, y);
System.out.println("정답은 " + answer_sub + "입니다.");
} else if (input.equals("M")) {
System.out.println("== 곱하기 연산==");
KSY_Calcu kc_multiply = new KSY_Calcu();
System.out.println("계산하고자 하는 첫번째 수를 입력하세요");
String x = sc.next();
System.out.println("계산하고자 하는 두번째 수를 입력하세요");
String y = sc.next();
BigDecimal answer_mul = kc_multiply.multiplyer(x, y);
System.out.println("정답은 " + answer_mul + " 입니다.");
} else if (input.equals("D")) {
System.out.println("== 나누기 연산==");
KSY_Calcu kc_divide = new KSY_Calcu();
System.out.println("계산하고자 하는 첫번째 수를 입력하세요");
String x = sc.next();
System.out.println("계산하고자 하는 두번째 수를 입력하세요");
String y = sc.next();
BigDecimal answer_dev = kc_divide.divider(x, y);
System.out.println("정답은 " + answer_dev + " 입니다.");
} else if (input.equals("X")) {
System.out.println("== 계산기를 종료합니다 ==");
break;
}
} // end of while()
} // end of main()
} // end of KSY_Calcu class
6교시 (15:30-16:20)
- Exam_String
package a.b.c.ch5;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Exam_String {
// 상수
public static final String MEMBER_NUM = "M";
public static final String BOARD_NUM = "B";
public static String mNum(String nCnt) {
int nn = nCnt.length();
for (int i=nn; i < 4; i++) {
nCnt = "0" + nCnt;
}
return nCnt;
}
public static String mNum_1(String nCnt) {
int nn = nCnt.length();
if (1 == nn) {
nCnt = "000" + nCnt;
} else if (2 == nn) {
nCnt = "00" + nCnt;
} else if (3 == nn) {
nCnt = "0" + nCnt;
}
return nCnt;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// 202107230001 : 회원번호 만들기 : 년월일 + 시퀀스 (0001 ~ 9999)
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String d = sdf.format(new Date());
System.out.println("d >>> : " + d);
String mnum = "";
String nCnt = "";
for (int i=1; i < 101; i++) {
nCnt = String.valueOf(i);
mnum = Exam_String.MEMBER_NUM // M
+ d // 20220224
+ Exam_String.mNum(nCnt);
System.out.println("mnum >>> : " + mnum);
}
}
}
7교시 (16:30-17:20)
- Exam_String_1
package a.b.c.ch5;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Exam_String_1 {
public static String 년월일() {
return new SimpleDateFormat("yyyyMMdd").format(new Date());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String s0 = "kosmo108.java";
// index = length() - 1;
// length() = index + 1;
System.out.println("s0.length() >>> : " + s0.length());
for (int i=0; i < s0.length(); i++) {
System.out.println("s0.charAt(" + i + ") >>> : " + s0.charAt(i));
}
String s01 = s0.substring(2);
System.out.println("s0.substring(2) >>> : " + s01);
String s02 = s0.substring(2, 13);
System.out.println("s0.substring(2, 13) >>> : " + s02);
System.out.println("s0.length() >>. : " + s02.length());
int index = s0.indexOf('o');
System.out.println("index >>> : " + index);
if (index != -1) {
System.out.println("s0.indexOf('0') >>> : " + index);
String s03 = s0.substring(index+1);
System.out.println("s0.substring(index+1) >>> : " + s03);
String fileName = s0.substring(0, index);
String newFileName = fileName + "(1)" + "." + s03;
String newFileName_1 = fileName + "_" + Exam_String_1.년월일() + "." + ㄴ03;
System.out.println("original fileName >>> : " + s0);
System.out.println("new fileName >>> : " + newFileName);
System.out.println("new fileName_1 >>> : " + newFileName_1);
}
int lastIndex = s0.lastIndexOf('o');
System.out.println("s0.lasIndexOf('o') >>> : " + lastIndex);
String s04 = s0.substring(lastIndex+1);
System.out.println("s0.substring(lastIndex+1) >>> : " + s04);
}
}
8교시 (17:30-18:30)
- Exam_String_2
package a.b.c.ch5;
import java.util.StringTokenizer;
public class Exam_String_2 {
public void charSplit(String sVal) {
System.out.println("charSplit(String sVal) sVal >>> : " + sVal);
if (sVal != null && sVal.length() > 0) {
String sChar[] = sVal.split("@"); // 델리미터 delimiter, 구분자
for (int i=0; i < sChar.length; i++) {
System.out.println("sChar[" + i + "] >>> : " + sChar[i]);
}
}
}
public void charToken(String sVal) {
System.out.println("charToken(String sVal sVal >>> : " + sVal);
if (sVal != null && sVal.length() > 0) {
StringTokenizer st = new StringTokenizer(sVal, "@^ |");
while (st.hasMoreTokens()) {
System.out.println(">>> : " + st.nextToken());
}
// for (int i=0; st.hasMoreTokens(); i++) {
// System.out.println(i + "번째 : " + st.nextToken());
// }
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String sVal = "a b^c,d ef,g|h^i,jk|l,m^no";
System.out.println("sVal >>> : " + sVal);
sVal = sVal.replace(',', '@');
System.out.println("sVal >>> : " + sVal);
Exam_String_2 ex2 = new Exam_String_2();
ex2.charSplit(sVal);
ex2.charToken(sVal);
}
}
Notes
- split 1.4 이후부터 생김
728x90
'국비지원교육 (22.01-22.07) > 강의노트' 카테고리의 다른 글
22-02-28(월) 023일차 [Java] HashMap, 입출력(IO) (0) | 2022.05.09 |
---|---|
22-02-25(금) 022일차 [Java] String, Date, Time, HashMap (0) | 2022.05.09 |
22-02-23(수) 020일차 [Java] java.util.Math (0) | 2022.04.20 |
22-02-22(화) 019일차 [Java] 예외처리 (0) | 2022.04.20 |
22-02-21(월) 018일차 [Java] 컬렉션 프레임워크, Variable Case, Equal test, String test (0) | 2022.04.20 |