-
(국비교육) 9 - 패턴 + 아스키 코드 시계 + switch + 동적 가변 배열 + 배열복사개발/국비교육 2023. 6. 13. 22:34
■ 프로그램에서 6자리 랜덤숫자 뽑기
내가 사용한 방법은 배열을 선언하여 출력했다.
6자리 랜덤한 숫자로 6까지 길이를 설정하고,
반복되는 숫자를 1 ~ 9까지 나와야 함으로 Math.random() * 9 + 1 로 설정했다.
이를 print 로 붙여서 출력하면 랜덤한 6자리 숫자가 나온다.
■ 암호키 뽑기 (영문대문자 + 숫자)
암호키 설정을 위해서는 패턴을 이용해준다.
패턴은 EENNN - NNNNN - EEEEE - NNEEE - EEEEE 과 같다.
따라서 초기 패턴을 배열에 선언해준다.
E = 0, N = 1, - = 2 로 설정하고 각 배열을 우선 넣어준다.
그리고 반복문을 통해 출력하는데
만약 0과 같다면 영문 대문자, 1과 같다면 숫자, 2와 같다면 - 기호가 나온다.
패턴이 영문자가 나오기 위해서는 Math.random() * 26 까지 0 ~ 25 나오고,
A 시작이 65이니까 +65 로 설정해준다.
숫자는 0부터 9까지 나와야 함으로 Math.random() * 10 까지 해줘야 9까지 나온다.
이 외 2일때 - 가 나오게 설정하고 출력하게 되면 각 패턴에 맞게 출력된다.
* 에러 해결
나는 변수로 Math.random 을 선언해서 출력문에 넣었는데 그랬을 경우 동일한 알파벳과 숫자가 나왔다.
확인해보니 Math.random 은 출력문에 닿자마자 랜덤으로 돌려주기 때문에 직접 출력문에 넣어줘야 한다고 한다.
■ 아스키 코드 시계 (2진법으로 시간 나타내기)
아스키 코드 시계는 시간을 2진법으로 나타낸 시계를 의미한다.
이를 위해 현재 로컬 시간을 불러오는
* 날짜 나타내기(Date)
LocalDate ld = LocalDate.now();
System.out.println(ld);
System.out.println(ld.getYear());
System.out.println(ld.getMonth()); //영어식
System.out.println(ld.getMonthValue()); //숫자
System.out.println(ld.getDayOfMonth());LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt.getHour());//시
System.out.println(ldt.getMinute());//분
System.out.println(ldt.getSecond());//초
System.out.println(Integer.toBinaryString(ldt.getHour()));
System.out.println(Integer.toBinaryString(ldt.getMinute()));
System.out.println(Integer.toBinaryString(ldt.getSecond()));※ 글자 now 처럼 기울어지면 static 이 붙여져 있는 것
■ 스위치
switch(검색변수){
case (조건):
조건이 참일 때 실행할 문장;
break;
case (조건2):
조건2가 참일 때 실행할 문장;
break;
default:
위 case에 모두 거짓일 때 실행할 문장;
}
※ 주의 : 검색변수는 수치형일 경우 int타입 이하만 가능합니다. long, 실수형은 불가능break 를 넣지 않으면 45입니다 와 20입니다. 둘 다 출력되는 오류가 발생한다.
■ switch 문제 출력 보기
■ switch 로 학점 구간 설정하기
검색변수에는 조건식이 설정이 불가능하다.
따라서
■ 이상한 회사의 엘레베이터
■ 동적 가변 배열
동적 가변배열은 배열의 길이를 동적으로 필요시에 생성하는 것이다.
동적 가변 배열이 아는 것은 처음부터 배열의 길이를 초기화 해서 만들어 사용하지만,
동적가변배열로 하게 되면 필요시에 생성 후 사용해야 한다.
■ 내부 크기 랜덤하게 잡아서 별 출력하기 (1 ~ 10까지)
■ 배열복사 (깊은 복사, 얕은 복사 p.195)
p 타입은 깊은 복사로 실제값을 복사
- 얕은 복사(Shallow Copy) : '주소 값'을 복사한다는 의미
- 깊은 복사(Deep Copy) : '실제 값'을 새로운 메모리 공간에 복사하는 것을 의미
배열 얕은 복사로 메모리 주소값을 복사
- src : 원본대상
- srcPos : 원본의 어느 위치부터 읽어올 것인지
- dest : 값을 담을 배열
- destPos : 어느 위치에 저장할 것인지
- length : 어느 길이만큼 읽어올 것인지 = 배열의 길이https://zzang9ha.tistory.com/372
■
r 타입에서는 값비교가 아닌 같은 주소인지 아닌지를 비교하는 것이다. (이전 String 특이성 글 참고)
따라서 값이 같은지를 비료하려면 str.equals(str2) 를 써야 한다.
■ String 사용법
- .concat : 해당 글자 연결
- .contains : 해당 글자를 포함하고 있는지 물어보기
- indexOf : 어디에서 시작하는지 위치
타파하는 해당하는 글자가 없으므로 -1 이 나온다.
해당하는 글자가 없으면 모두 -1 로 출력
- replaceAll : 치환하다, 바꾸다 "p" 를 "피" 로 바꿀래
- .substring : string을 잘라내 내가 원하는 시작위치부터 끝까지 가져오는 것
- .substirng( , ) 의 잘라내고 싶은 위치 설정은 시작위치부터 끝위치-1 로 설정
- .equalsIgnoreCase() : 대소문자 상관없이 같은지 다른지
- .equals() : 정확하게 비교해 같은지 다른지
EX)
apple = "apple";
System.out.println(apple.equalsIgnoreCase("apple")); -> true
System.out.println(apple.equalsIgnoreCase("APPLE")); -> true
System.out.println(apple.equals("apple")); -> true
System.out.println(apple.equals("APPLE")); -> falsehttps://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html
■ 이메일 판별하기
- join("연결자", 값1, 값2, 값3....)
EX)
String msg = String.join("", id, "님 반갑습니다.");
System.out.println(msg);■ 실습문제
1. 8의 숫자 구하기
모든 수를 다 붙이고 거기서
charAt 은 string 타입으로 받은 문자열을 char 타입으로 한 글자만 받는 함수
https://jamesyleather.tistory.com/63?category=826361
https://codingdojang.com/scode/393?answer_mode=hide
2. 문자열을 받아 반복횟수 압축하기 aa2bbb3
https://codingdojang.com/scode/465?answer_mode=hide
3. 모스부호 해석
https://codingdojang.com/scode/469?answer_mode=hide
※ 단축키
- 사용하지 않는 import 지우기 : Ctrl + Shift + o(영문자 o)
- outline 없는 경우
window -> show view -> outline
* 정보처리기사 자격증 준비
https://www.q-net.or.kr/crf021.do?id=crf02101&gSite=Q&gId=
정보처리기사 기출문제 문제은행 - 뉴비티::새로운 CBT 문제풀이 시스템 (newbt.kr)
https://www.gunsys.com/q/index.php?midCode=1015
'개발 > 국비교육' 카테고리의 다른 글
(국비교육) 11 - 클래스 생성(동물원) + 참조값 + 객체특징 + Run Configurations + UP&DOWN + 타노스 손가락 (0) 2023.06.15 (국비교육) 10 - 가위바위보 승률 + spilt + 객체지향 + 클래스 생성 + 메소드 + .sort (0) 2023.06.14 (국비교육) 8 - 알고리즘 + 제어문 + do while + 숫자 랜덤뽑기 + 로또 (0) 2023.06.12 (국비교육) 7 - 랜덤 + 2차원 배열 + 로또뽑기 + N자 그리기 + 중복값 제거 (0) 2023.06.09 (국비교육) 6 - 구구단 출력하기 + %활용문 + 배열 (0) 2023.06.08