JAVA) 03번째 회고
1. Scanner란?
사용자로부터 입력을 받을 수 있도록 도와주는 표준 입력장치이다.
Scannersc=newScanner(System.in); 객체를 생성하면
import java.util.Scanner; 가 상단에 자동 생성된다.
(java.util 패키지에 포함되어 있어 java.util을 import를 해줘야 사용할 수 있다.)
💡 Scanner 메소드
메서드 | 반환타입 | 예시 | 설명 |
next() | String | String sp = sc.next(); | 다음 토큰을 찾고, 그것을 String으로 반환함. 토큰은 기본적으로 공백 문자로 구분된다. |
nextInt() | Int | int one = sc.nextInt(); | 입력에서 다음 토큰을 찾되, 그 토큰을 정수(int)로 파싱하여 반환함. |
[Java/자바] Scanner 클래스 (입력받기)
Scanner 클래스란? Scanner란 사용자로 부터 입력을 받을 수 있도록 도와주는 것으로, 간단한 예시를 보자면, 사용자가 게임에 로그인하기 위해, 아이디와 비밀번호를 입력하는 것과 같습니다. Scanner
hstory0208.tistory.com
이 외에도 더 많은 메소드가 있다.
출처 : Hyun/Log
💻 Scanner.in
System.out.println("뭔가를 하다가....");
// args 매개변수를 통해 값 얻기
System.out.println(args.length);
System.out.println("args : " + args[0]); // 여러개 중에 index 0번째 출력
System.out.println();
// 프로그램 진행 도중에 키보드로 값 받기
Scanner sc = new Scanner(System.in); // 표준 입력장치(키보드)로 값 얻기
System.out.print("이름 입력: ");
String irum = sc.next(); // 콘솔에 값 입력
System.out.println("나이 입력: ");
int nai = sc.nextInt();
System.out.println("이름은 " + irum + ", 나이는" + nai + "살");
💻 예제 코드01 윤년 구하기
int year, month, days=28;
String msg = "평년";
Scanner sc = new Scanner(System.in);
System.out.println("년도 입력: ");
year = sc.nextInt();
System.out.println("월 입력: ");
month = sc.nextInt();
// year = 2024;
// month = 2;
if(month < 1 || month > 12) {
System.out.println("월은 1 ~ 12 사이만 허용"); // 입력자료 오류 검사
System.exit(0); // 프로그램의 강제 종료
}
2. Swich문
좀 더 정형화된 문법으로 값에 따라 여러 방향으로 분기하는 경우에 사용한다.
길게 늘어진 if문에 비해 코드가 짧고 의미 파악이 쉽다.
💻 예제 코드01
int nai = 29;
nai = nai / 10 * 10; // 곱하기와 나누기는 우선순위가 같으므로 왼쪽 먼저 계산
// System.err.println(nai);
switch (nai) {
case 20:
System.err.println("20대");
break; // 20대여도 밑으로 쭉 값이 출력되기 때문에 break문으로 값에 따른 탈출을 유도
case 30:
System.err.println("30대");
System.err.println("만세");
break;
default:
System.err.println("기타");
break; // 선택적
}
2️⃣ 예제 코드02
String jik = "청소부"; // 문자열이 들어올 수도 있다.
switch (jik) {
case "대리":
System.err.println("대리");
break;
case "과장":
System.err.println("과장 만세");
break;
case "부장":
System.err.println("부장 만만세");
System.err.println("하하하");
break;
default:
System.err.println("기타 직원");
}
💻 예제 코드03 난수 출력
System.out.println(Math.random()); // 랜덤결과값(소수)
// int time = (int)(Math.random() * 10); // 10을 곱하여 소수점을 옮기고 int화 함으로서 소수점 밑에를 다 버린다.
int time = (int)(Math.random() * 4) + 8; // 8 ~ 11 사이의 정수 얻기
System.out.println(time);
switch (time) {
case 8:
System.out.println("학원 가자");
break;
case 9:
System.out.println("인사 하자");
System.out.println("복습 하자");
break;
case 10:
System.out.println("문제 풀자");
break;
default:
System.out.println("명상 시간");
}
}
// random값 (학원 가자, 인사 하자, 복습 하자, 문제 풀자, 명상 시간)
💻 예제 코드04 if문 + Swicht문 윤년 구하기
// 윤년 체크해서 윤년이면 2월에 29를 준다.
// 4의 배수이고 100의 배수가 아니거나 400의 배수
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
days = 29;
msg = "윤년";
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
// case 2:
// break
}
System.out.println(year + "년 " + month + "월은 " + days + " " + msg);
}
}
3. for문 (반복문)
프로그램의 흐름을 바꾸는 역할을 하는 문장들을 '제어문'이라고 하며, 제어문에는 조건문과 반복문이 있다.
for문의 구조
for(초기식;조건식;증감식) {
조건이 참일 동안만 반복;
}
for문은 조건식이 참인 동안 괄호 안의 문장들을 반복하다가 거짓이 되면 반복문을 벗어난다.
처음에 초기값(변수에 최초의 값을 저장)을 실행하며, 조건식에 참일 동안 괄호 안에 문장들을 반복 실행한다.
💻 예제 코드 01
int a;
// for(int a = 1; a <= 5; a = a + 1) { // a = 1로 초기화. 조건만큼(5이하까지) 반복. a + 1씩 증감
// for(a = 1; a <= 5; a = a + 1) {
// for(a = 1; a <= 5; a += 1) {
int sum = 0; // 누적 기억장소
for (a = 1; a <= 7; a++) {
System.out.println("a : " + a); // 참이면 실행
sum += a;
}
// a : 1
// a : 2
// ...
// a : 7
아, 참고로 for 안의 값에 손을 대면 안 된다.
루프의 행동이 예측하기 어려워지고, 코드의 가독성과 유지보수성이 떨어지기 때문이다.
💻 예제 코드02
System.out.println("반복문 수행 후 a : " + a); // 거짓이면 실행
System.out.println("합은 " + sum);
for (int i = 65; i <= 90; i++) {
System.out.print((char) i + " ");
}
System.out.println();
for (int i = 'A'; i <= 'Z'; i++) {
System.out.print(i + " ");
}
System.out.println();
for (int i = 10; i > 1; i -= 2) {
System.out.print(i + " ");
}
System.out.println();
for (int ytn = 0, tvn = 5; ytn <= 5; ytn++, tvn++) {
System.out.print(ytn + "," + tvn + ":");
}
// 반복문 수행 후 a : 8
// 합은 28
📌 참고
int aa = 1; // 여기에 값을 쓰면
for (; aa <= 5; aa++) { // 초기화식에 세미콜론만 냅둬도 됨.
System.out.print(aa + " ");
}
4. 다중 for문
💻 예제 코드01
for (int m = 1; m <= 3; m++) {
System.out.println("m =" + m);
for (int n = 1; n <= 4; n++) {
System.out.print("n :" + n + " ");
}
System.out.println();
}
// m =1
// n :1 n :2 n :3 n :4
// m =2
// n :1 n :2 n :3 n :4
// m =3
// n :1 n :2 n :3 n :4
💻 예제 코드02
for (char i = 65; i <= 90; i++) {
System.out.print(i + " : ");
for (char j = i; j <= 'Z'; j++) { // char i = 65(A) = j >> A ~ Z 도장찍기
System.out.print(j);
}
System.out.println();
}
// A : ABCDEFGHIJKLMNOPQRSTUVWXYZ
// B : BCDEFGHIJKLMNOPQRSTUVWXYZ
// C : CDEFGHIJKLMNOPQRSTUVWXYZ
// D : DEFGHIJKLMNOPQRSTUVWXYZ
// ...
// W : WXYZ
// X : XYZ
// Y : YZ
// Z : Z
Scanner의 활용법은 어느 정도 알겠는데 for문 if문은 아직 어떻게 코드를 짜야하는지 헷갈린다..
아직 수업 들은 지 며칠 안 돼서 그런지는 모르겠지만 지금도 그렇고 앞으로도 내가 어떠한 부분이
취약한지 파악해서 보완하는 것을 습관화해야겠다.