조건문
1. if 문
if(조건식) { 조건식이 true일 경우 실행될 코드 }
==> 조건식의 결과가 true 일 경우 : {}(중괄호) 내부 코드 실행
==> 조건식의 결과가 false 일 경우 : {}(중괄호) 안의 코드를 건너 뜀
* 조건식 활용 시에는 어떤 순서로 조건문을 쓸 지 고민해야함. 많이 사용될 구문 순으로 코드를 짜서 가능하면 빠르게 if문을 빠져나가도록 설계해야 함 if 문 작성시 가장 빨리 if문을 빠져나갈 수 있는 방향으로 설계
2. if - else 문
if (조건식) { 조건식이 true일 때 실행할 코드 - 1 *
} else { 조건식이 false일 경우 실행할 문장 - 2 * }
조건식 결과 t => 1 수행
조건식 결과 f => 2 수행
*else블럭은 생략가능함
3. if - else if
* if(조건식1) { * 조건식1이 t일 경우 수행 문장 *
} else if (조건식 2) { * 조건식2가 t일 경우 수행 문장 *
} else if (조건식 3) { * 조건식3가 t일 경우 수행 문장 *
} else if (조건식 4) { * 조건식4가 t일 경우 수행 문장 *
......
} else { * 상기 조건이 모두 false일 경우 수행 문장 }
*else블럭은 생략가능함
4. switch문
조건식의 결과가 정수, 문자, 문자열의 경우에만 사용가능
switch (조건식) { // case 정수, 문자, 문자열 : 실행할코드 ;
case 값1 : 실행할코드 1;
break; // switch영역 탈출
case 값2 : 실행할코드 2;
break; // switch영역 탈출
case 값n : 실행할코드 n;
break; // switch영역 탈출 * *
default : //실행코드 (else와유사)
// 주민번호 입력 후 성별 판별
// 사용자로부터 주민번호 입력받기 ->xxxxxx-0xxxxxx
// 주민번호를 입력받아서 남성(1,3) / 여성(2,4)
// 사용자로부터 주민번호 입력받기 : xxxxxxx-1/2/3/4xxxxxxx
// 1) if 문
public void method1() {
Scanner sc = new Scanner(System.in);
System.out.println("주민등록번호를 입력하세요 (\"-\"포함))");
// 문자열 내 쌍따옴표 쓸 때에는 ( \" \") 사용
String idNum = sc.next();
char gender = idNum.charAt(7);
if (gender == '1' || gender == '3') {
// 비교연산자 사용할 때 변수 양쪽 다 넣는거 잊지마!!
// (gender 양쪽에 두 번 써야한다구)
System.out.println("당신은 남자입니다");
} else if (gender == '2' || gender == '4') {
System.out.println("당신은 여자입니다");
} else { System.out.println("존재할 수 없는 성별입니다");
}
}
// 2) switch문
public void method2() {
Scanner sc = new Scanner(System.in);
System.out.println("주민등록번호를 입력하세요( \"-\"포함))");
String idNum = sc.next();
char gender = idNum.charAt(7);
switch (gender) {
case '1' : case '3' :
System.out.println("당신은 남자입니다");
break;
case '2' : case '4' :
System.out.println("당신은 여자입니다");
break;
default:
System.out.println("존재할 수 없는 성별입니다");
}
// 예제2
// 나이를 입력받고 어린이, 청소년, 성인 판단
// 어린이: 0-13
// 청소년: 14-19
// 성인: 20++
// - : 외계인
public void method3() {
Scanner sc = new Scanner(System.in);
System.out.println("나이를 입력하세요");
int age = sc.nextInt();
if (age >= 20) {
System.out.println("성인입니다");
} else if (0 <= age && age <= 13) {
// && 오왼 양쪽으로 변수 두 번 쓰는 것 잊지마!!
System.out.println("어린이입니다");
} else if (14 <= age && age <= 19) {
System.out.println("청소년입니다");
} else { System.out.println("입력불가한 나이입니다"); }
반복문
1. for문
- 초기식; 조건식; 증감식 세 가지로 구성
* ;; 각각 세미콜론으로 구분
- 초기식: 반복문이 시작될 때 "초기에 단 한번만 실행되는 구문"!
반복문 사용 변수를 선언 및 초기화하는 구문 => 자료형 변수명 = 값; * - 조건식: 반복문이 실행될 조건을 작성하는 구문
* 조건식이 true => 반복 실행,
* 조건식이 false => 반복을 멈추고 탈출 (for문의 } 다음으로 이동)
- 증감식: "반복문을 제어하는 변수의 값(제어변수)"을 증감시키는 구문
* 보통 초기식에서 선언된 변수로 증감식 작성
일반적으로 증감연산자가 사용됨 i++ i--
for( 초기식; 조건식(boolean) ; 증감식 ) { // * 조건식을 만족하는 동안 반복할 문장
}
// i의 값이 1에서 시작, 5와 같아질때까지 1씩 증가
for (/*1번--for문실행 첫번째만*/ int i =1;
// 변수는 스코프({})내부에서만 살아있을 수 있음 ,
//이후 사용시 에러 (메모리에서 사라짐)
/*2번*/ i<=5;
/*4번--for문블럭 끝나면 무조건 증감식*/ i++)
{ /*3번: for문의 코드블럭 내부 */
System.out.println(i + "번반복");
} // 조건식이 f인 순간 for문블럭 탈출
}
//for(int i=0; i<30 ; i++) {
// 출력형식: x번째 반복입니다 (1부터 50까지)
// 10번째 반복마다 +☆찍기
public void forEx1 () {
for (int i=1; i <= 50 ; i++ ) {
// for문 초기식 선언시 데이터타입 빼먹지마!!!! (int !!! i)
if (i % 10 != 0) {
System.out.println(i+"일째 공부중입니다");
} else { System.out.println(i+"일째 공부중입니다 ★"); }
} //for 문 끝
} // 메서드 끝
// 구구단 출력
// 1 x 1 1 x 2 1 x 3 1 X 4
// 2 X 1 2 X 2 2 X 3
// 3 X 1 3 X 2 3 X 3
// 중첩의 for 문 for( 앞숫자도 1씩 증가 (for (앞숫자불변 * 뒷숫자 1씩증가) )
public void forEx2 () {
for (int j=1; j <= 9; j++) {
for (int i=1; i <= 9; i++) {
System.out.println(j+ " X " +i+ " = " +j*i);
}
}
}
// 사용자에게 단을 입력받아서 구구단 출력
public void forEx3 () {
Scanner sc = new Scanner(System.in);
System.out.println("1~9단 중 출력을 원하는 구구단의 단을 입력하세요");
int dan = sc.nextInt();
for (int i=1; i <= 9; i++) {
System.out.println(dan+ " X " +i+ " = " +dan*i);
}
}
2. while문
* 초기식; 필수는 아님
* while(조건식) { // 반복 수행될 문장;
증감식; 필수아님 }
괄호 내 조건식이 true일 경우 해당(a)구문을 반복실행
* while(true){ } => 무한반복, 무한반복에 주로 while문을 씀
==> 반복의 횟수를 명확하게 알 때: for문
==> 반복의 횟수를 모를 때: while문
3. do -while문
초기식; (생략가능)
do {
증감식; (생략가능)
} while (조건식) ;
- while문은 처음 수행시에도 조건식 검 사결과가 true여만 실행
- do- while은 첫 실행은 별도 조건검사 없이 무조건 실행, 이후부터는 조건검사 결과에 따라 실행
4. 랜덤한 숫자 구하기 (math.random -->math클래스의 random 메서드)
// random() 결과값: 0.0~0.99999..
Math.random(); //
(.)=>참조연산자 (A클래스의 b 메서드 부를 때: A.b(); )
==> Math클래스는 따로 객체생성할 필요가 없음
일정한 범위 내의 랜덤한 정수값을 얻을 경우
(int)(Math.random()*몇개의 랜덤값) + 시작수
1단계 : random메서드 호출
2_1단계: random*10
2_2단계 : int형 강제형변환
2_3단계: ++1
// 로또_ver1
// 번호 범위: 1~45까지 중에서
// 6개 선택
public static void lottoVer1 () {
// 메소드명 입력하고 () 적는것 잊지마!!
for (int i=0 ; i < 6 ; i++ ) {
System.out.println((int)(Math.random()*45)+1);
}
}
Break, Continue (반복문 관련)
1. Break문
- break문을 만나는 순간 가장 가까운 반복문(for, while)을 빠져나감
(해당반복문이 끝나는 지점으로 이동)
- 해당 break문이 속해있는 반복문 *****한 겹만****** 빠져나감
* switch문 case 내부 break와 다른 개념 (switch문의 경우 해당 switch문을 빠져나가는 용도)
2. Continue문
- continue를 만나면 그 뒤 어떠한 구문이 있어도 실행하지 않고 pass한 후,
가장 가까운 반복문으로 되돌아감(**증감식부분으로)
// 1~100까지 짝수 더하기 - if문/ if -continue문// while문
// 1 - if 문만 사용
public void ifEx1() {
int sum = 0;
for (int i=1 ; i <= 100; i++) {
if ( i % 2 == 0) {
sum += i;
}
}
System.out.println("합계: " +sum);
// 2 - if - continue문
public void ifEx2() {
int sum=0;
for (int i=1; i<=100; i++) {
if (i % 2 == 1) {
continue; // 아래 구문을 생략하고 증감식으로 이동
}
sum += i;
}
System.out.println("합계: "+sum);
}
// 3 - while문 사용
public void ifEx3() {
int sum=0;
int i=1;
while (i <=100 ) {
if(i % 2 == 0) { sum += i;
}
i++;
}
System.out.println("합계: "+sum);
}
// 매 번 사용자에게 문자열을 입력받은 후
// 해당 문자열의 길이를 출력
// 단, 사용자가 "exit"입력시 ,반복문 탈출
// ** 무한반복!: 반복문의 조건식이 늘 참이 되게 하라!
public static void stringLength() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("문자열을 입력하세요. 해당 문자열의 길이를 알려드릴게요");
String wr = sc.nextLine();
if(wr.equals("exit")) {
break;
}
System.out.println(wr.length());
}
}
/* 1. 사용자로부터 한 개의 값을 입력받아 1부터 해당 숫자까지의 모든 숫자를 거꾸로 출력하시오.
* 단.입력한 숫자는 1보다 크거나 같다.
* 1 미만의 숫자 입력 시 '1 이상의 숫자를 입력하세요" 출력, 다시 값을 입력받으시오 *
* ex_
* 1이상의 숫자를 입력하세요 : 4
* 4321
* 1이상의 숫자를 입력하세요 : 0
* 1이상의 숫자를 입력해주세요.
* 1이상의 숫자를 입력하세요
*/
public void reverse() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("정수 하나를 입력하세요.");
int num = sc.nextInt();
if (num >= 1) {
// 조건식 반환타입 적는것 까먹지말라구!!
for (int i = num; i >= 1 ; i--) {
// 초기식 반환타입 까먹지말라구!!!
System.out.println(i);
}
break;
}
System.out.println("1 이상의 숫자를 입력하세요");
}
'Java' 카테고리의 다른 글
[JAVA / 자바] API - Math클래스 (0) | 2023.02.20 |
---|---|
Properties 객체 (0) | 2022.11.10 |
[JAVA / 자바] 연산자 (0) | 2022.10.15 |
[JAVA / 자바] 형변환 (0) | 2022.10.15 |
[JAVA / 자바] 변수 (1) | 2022.10.11 |