노베이스에서 개발자까지
자바 4일차 (반복문, for, while, break, continue) 본문
▣ 반복문
- for문 : 규칙적인 반복, 반복하려는 횟수를 알고 있을 때
- while문 : 조건이 중요할 때, 조건이 맞지 않으면 한번도 실행하지 않을 수 있음
- do ~ while문 : 조건이 중요할 때, 반드시 한번은 실행
1. for문
for(초기화 ; 조건식 ; 증감식){
조건식이 참인 동안 반복할 문장
}
================================================
#.아스키코드
이런게 있다 정도로만.
package repeatExam;
public class Encryption {
public static void main(String[] args) {
String password = "ghdrlfehd";
String encryPass = ""; // 암호코드
String decryPass = ""; // 복호화 코드(암호를 풀어 놓은 코드)
final int KEY = 2; //숫자는 임으로 설정함, 해당 문자를 다른 문자처럼 변환하기 위해 사용
//암호화 :(char)(문자열.charAt(인덱스) * KEY)
// 문자열의 길이 : 문자열.length() => 글자의 개수
for(int i=0; i<password.length(); i++) {
encryPass += (char)(password.charAt(i) * KEY);
// encryPass = encryPass + (char)(password.charAt(i) * KEY);
}
System.out.println(encryPass);
// 복호화 :(char)(암호화된문자열.charAt(인덱스) / KEY)
for(int i=0; i<encryPass.length(); i++) {
decryPass += (char)(encryPass.charAt(i) / KEY);
}
System.out.println(decryPass);
}
}
================================================================
2. while
- 조건이 중요할 때
while(조건식){
조건식이 참일 때 반복할 문장들
}
while(kor>=60)
while(true)
============
package repeatExam;
public class WhileTest01 {
public static void main(String[] args) {
//#1.==================================
// 1 ~ 5까지 합
int forTotal = 0;
// for(초기식 ; 조건식(종결식); 증감식) { }
for (int i = 0; i <= 5; i++) { // i는 0 i가 5보다 작을때 까지 더해라
forTotal += i; // forTotal = forTotal + i ;
}
System.out.println(forTotal);
//#2.=============================================
int whileTotal = 0; // 합
int i = 1; // 시작값
// while(조건식) { } // 조건식 => 종결식
while (i <= 5) {
whileTotal += i; // whileTotal = whileTotal + i;
i++; // ++i ; i = i + 1
}
System.out.println("1. " + whileTotal);
//#3. ==============================================
int whileTotal1 = 0; // 합
int a = 0; // 시작값
// while(조건식) { } // 조건식 => 종결식
while (a < 5) {
a++; // a=a+1;
whileTotal1 += a; // whileTotal1 = whileTotal1 + a;
}
System.out.println("2. " + whileTotal1);
}
}
================================================
3. break
- 반복문을 빠져나감
- if문의 {}를 제외한 자신과 가장 가까이 있는 {}을 벗어남
- break문 아래쪽 문장들은 실행하지 않음
4. continue
- 반복문의 조건으로 되돌아 가기
- for문에서는 증감식 부분으로
while 문에서는 조건식 부분으로 올라가기
- continue 문 아래쪽 문장들은 실행하지 않음
package repeatExam;
import java.util.Scanner;
public class WhileTest02 {
public static void main(String[] args) {
// 1. =====================
int a = 1;
while (true) { // a<5
System.out.println(a + "안녕!!");
System.out.println();
if (a == 5) {
break;
}
a++; // a = a + 1;
} //while 끝
System.out.println();
2. =============================
int b = 1;
while (true) { // a<5
System.out.println(b + "안녕!!");
System.out.println();
if (b == 5) {
break;
}
b++; // b = b + 1;
} // while 끝
문제1) 주문 코드를 입력받아
1 - 커피 주문하셨습니다.
2 - 홍차 주문하셨습니다
3 - 라떼를 주문하셨습니다.
4 - 콜라를 주문하셨습니다.
0 - 주문 종료를 선택하셨습니다.
이 외의 숫자가 입력되면 "주문 번호가 맞지 않습니다. 다시 주문 하세요..."
int orderCode = 0;
String order="";
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("주문 코드를 입력 \n"
+ "1.커피 2.홍차 3.라떼 4.콜라 0.주문종료");
orderCode = scan.nextInt();
//if(orderCode==0) {
//System.out.println("주문 종료");
//break;
//}
if(orderCode == 1) {
order="커피";
}else if(orderCode == 2) {
order="홍차";
}else if(orderCode == 3) {
order="라떼";
}else if(orderCode == 4) {
order="콜라";
}else if(orderCode == 0) {
System.out.println("주문종료");
break;
}else {
System.out.println("주문 번호가 맞지 않습니다. 다시 주문 하세요...");
continue;
}
System.out.println(order + " 주문하셨습니다.");
System.out.println();
}
//==========================================
String orderCodeString = "";
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("주문 코드를 입력 \n" + "1.커피 2.홍차 3.라떼 4.콜라 0.주문종료");
orderCodeString = scan.next();
System.out.println();
if (orderCodeString.equals("0")) {
System.out.println("주문종료");
break;
}
switch (orderCodeString) {
case "1":
System.out.println("커피 주문");
break;
case "2":
System.out.println("홍차 주문");
break;
case "3":
System.out.println("라떼 주문");
break;
case "4":
System.out.println("콜라 주문");
break;
default:
System.out.println("잘못주문 다시 주문");
}
}
}
}
===============
package repeatExam;
import java.util.Scanner;
public class WhileTest03 {
public static void main(String[] args) {
// (1) square
// (2) square root
// (3) log
// 원하는 메뉴(1~3) 를 선택하세요.(종료 : 0)
//1=> 선택한 메뉴는 1번입니다.
//0 => 프로그램을 종료합니다.
int menu=0;
String menuString = "";
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
System.out.println("원하는 메뉴(1~3) 를 선택하세요.(종료 : 0) >>");
// menu = scan.nextInt();
menuString = scan.next();
menu = Integer.parseInt(menuString);
if(menu == 0) {
System.out.println("프로그램 종료");
break;
}else if(!(menu>=1 && menu<=3)) {
System.out.println("메뉴를 잘못 선택함");
continue;
}else {
System.out.println(" => 선택한 메뉴는 " + menu + "번입니다.");
System.out.println();
}
}
//문제1) 반지름을 입력받아서 원의 넓이와, 밑변과 높이를 입력받아 사각형의 넓이 구하기
//문제2) 두수를 입력받아서 두 수의 차이를 구하시오. 단, 차이는 양수가 되도록 프로그램 작성
//문제3) 1 ~ 100까지 홀수의 합을 구하시오.
//문제4) 100 ~ 1 까지의 짝수의 합을 구하시오.
4일차
직접 풀이를 해보는 시간이 점점 더 많아지고 있다.
그대로 받아적다가 에러가 떠서 어디서 에러가 났는지 찾고있으면
풀이는 3번 4번 쭉쭉 치고 나가고 진도는 밀리고
내 이해하는 속도도 따라 밀리고
그렇게 겉잡을 수 없이 놓치다 보면
이젠 내가 뭘 알고 뭘 모르는 건지
두 손 놓고 강의는 언제 끝나나 시계만 멍~~하니 보고있다가
여섯시에 끝나고 나 혼자 만지작 만지작 해보지만
강의를 들어도 모르는 걸 혼자 해본다고 될 턱이 있나
언젠가 겪을 일이였지만 불과 4일만에라니 맙소사
게다가 책에서 충분히 봤던 것들인데
직접 해보기 보단 예제들을 눈으로만 따라갔던 내 공부(?)는
반의반의반의반쪽 짜리 공부였는가보다.
아직은 시작한지 얼마 되지도 않았거니와 아예 모르는게 아니라
대충은 알지만 머릿속에서 정리가 안된 정도이니
내일부턴 전략을 바꿔 에러가 나도 당장은 지나가고 강사님 설명에 집중하면서
진도를 따라가봐야겠다.
코딩이라는게 내가 직접 해보는 게 저~~어어엉말 중요하다는 걸 느꼇다.
눈으로만 백날천날 따라가봐야 한 번 직접 해보는 것만 못한 거 같다.
내일까지만 악착같이 듣고 주말 이틀은 온전히 공부에 할애해야겠다.
오늘의 교훈~
※ 에러에 연연하지 말고 일단 강의에 집중할 것
※ 최대한 많이 직접 짜볼 것 눈으로 따라가는 건 큰 도움이 안됨.
'Java > 멀캠 자바' 카테고리의 다른 글
자바 6일차(클래스,필드,메서드,) (0) | 2022.09.26 |
---|---|
자바 5일차(배열) (0) | 2022.09.23 |
자바 3일차 (연산자, 제어문) (0) | 2022.09.22 |
자바 2일차 (자료형, 변수, 스캐너 클래스, 타입 변환) (2) | 2022.09.20 |
자바 1일차 (자바 설치 및 기본적인 것들) (2) | 2022.09.19 |