💡 for문과 while문은 구조와 기능이 유사하여 어느 경우에나 서로 변환이 가능하다.
for(초기식; 조건식; 증감식) {
수행될 코드;
}
for(초기값1; 조건식1; 증감식1) {
수행될 코드1;
for(초기값2; 조건식2; 증감식2) {
수행될 코드2;
}
수행될 코드3;
}
}
for문에 진입하면 수행될 코드1을 먼저 수행하고 -> 두 번째 for문에 진입하면 ->
조건식2가 false가 될 때까지 수행될 코드2를 수행 후 나오면 ->
수행될 코드3을 수행하고 -> 조건식1로 돌아와 true면 다시 반복
💡 2회전 이상부터는 모두 2회전과 동일하고 조건식이 false가 나올 때까지 문장 수행
- 초기식 : for문을 제어하는 용도의 변수 선언
- 조건식 : for문의 반복 여부를 지정하는 식.(다음 반복 진행해?) 보통 초기식에 사용된 변수를 이용하여 조건식을 작성함.
- 증감식 : 초기식에 사용된 변수를 for문이 끝날 때 마다 증가 or 감소 시켜
조건식의 결과를 변하게 하는 식.
for(int i = 1; i <= 10; i++) {
System.out.println(i + “ 출력");
}
public void ex1() {
//1~10 출력하기
//-> 1부터 10까지 1씩 증가하며 출력
// * 반복문은 조건식이 true 일 때만 반복
for( int i = 1; i <= 10 ; i++){
// 1) 초기식 2) 조건식 4) 증감식
System.out.println("i: " + i);
// 3) 반복 수행될 코드
}
}
public void ex2() {
//3에서 7까지 1씩 증가하며 출력
//3 4 5 6 7
for(int i = 3; i <= 7; i++) {
System.out.println(i);
}
}
public void ex3() {
//1부터 (**입력받은 수까지) 1씩증가하며 출력
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요 : ");
int num = sc.nextInt();
for(int i = 1; i <= num; i++ ) {
System.out.println("출력: " + i);
}
}
public void ex4() {
// 1.0부터 입력받은 실수 까지 0.5씩 증가하며 출력
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요 : ");
double num = sc.nextDouble();
for(double i = 1.0; i <= num; i += 0.5 ) {
System.out.println("출력: " + i);
}
}
public void ex5() {
//영어 알파벳 A 부터 Z까지 한줄로 출력
//char 자료형은 ? 유니코드
/*for(int i = 'A'; i <= 'Z'; i++) {
System.out.print((char)i);
}*/
for(char i = 'A'; i <= 'Z'; i++ ) {
System.out.print(i);
}
}
public void ex6() {
//응용문제!
//1부터 10까지 모든 정수의 합 구하기
// => 합계 :55
int sum = 0; //반복되어 증가되는 i값의 합계를 저장할 변수
//0으로 시작하는 이유: 아무것도 더하지 않음으로 정확히 결과를 도출 할 수 있기 때문에
for(int i = 1; i <= 10; i++ ) {
sum += i;
// sum = sum + i;
}
System.out.println("합계 :" + sum);
}
public void ex7() {
// 1부터 20까지 1씩 증가하면서 출력
// 단, 5의 배수에 () 를 붙여서 출력
// ex) 1 2 3 4 (5) 6 7 8 9 (10) 11 ...
for(int i = 1; i <= 20; i++) {
if(0 == i % 5) {
System.out.print("(" + i + ") ");
}else {
System.out.print( i + " ") ;
}
}
}
//****중첩 반복문****
public void ex8() {
//구구단 모두 출력하기
for(int dan = 2; dan <= 9; dan++ ) {
for(int i = 1; i <= 9; i++) {
System.out.printf("%2d X %2d = %2d\n", dan, i , dan * i);
}
System.out.println();//줄바꿈
}
}
public void ex9() {
//구구단 역순 추력
// 9단~2단까지 역방향
//곱해지는 수는 1~9
for(int dan = 9; dan >=2; dan--) {// 단 9 -> 2
for(int i = 1; i <= 9; i++) {// 수 1 -> 9
System.out.printf("%2d X %2d = %2d\n", dan , i , dan * i);
}
System.out.println();
}
}
public void ex10() {
//12345
//12345
//12345
//12345
//12345
for(int x = 1 ; x <= 5; x++) {//5바퀴 반복하는 for문
for(int y = 1; y <=5; y++) {//12345 한 줄 출력하는 for문
System.out.print(y);
}
System.out.println();
}
System.out.println("=============================");
//54321
//54321
//54321
for(int x = 1 ; x <= 3; x++) {//5바퀴 반복하는 for문
for(int y = 5; y >= 1; y--) {//12345 한 줄 출력하는 for문
System.out.print(y);
}
System.out.println();
}
}
public void ex11() {
//1
//12
//123
//1234
//==========
//4321
//321
//21
//1
for(int x = 1; x <= 4; x++) {
for(int y = 1; y <= x; y++) {
System.out.print(y);
}
System.out.println();
}
for(int x = 4; x >= 1; x--) {
for(int y = x; y >= 1; y--) {
System.out.print(y);
}
System.out.println();
}
}
while(조건식) {
수행될 코드; //조건식이 true일 동안 반복 수행될 구문
[증감식 or 분기문]; //ex) i++ or break
}
조건식이 true일 때 문장 수행 -> 문장 수행이 끝나면 조건식 다시 확인 후
->true면 수행, 조건식이 false가 될 때까지 수행 -> 조건식이 false가 되면 반복문 종료
💡 { } 안에 조건을 벗어나게 할 연산(증감식, 분기문) 필요
int i = 1;
while(i <= 10) {
System.out.println(i + " 출력");
i++;
}
public void ex1() {
Scanner sc = new Scanner(System.in);
int input = 0;
while(input != 9 ) { //input이 9가 아닐때 반복
System.out.println("=======키오스크=======");
System.out.println("=======메뉴선택=======");
System.out.println("1. 떡볶이");
System.out.println("2. 김밥");
System.out.println("3. 쫄면");
System.out.println("9. 종료");
System.out.println("메뉴 선택 >> ");
input = sc.nextInt();
switch(input) {
case 1: System.out.println("떡볶이 주문 완료!"); break;
case 2: System.out.println("김밥 주문 완료!"); break;
case 3: System.out.println("쫄면 주문 완료!"); break;
case 9: System.out.println("키오스크를 종료합니다!"); break;
default : System.out.println("잘못 입력하셨습니다");
}
}
}
public void ex2() {
//입력되는 모든 정수의 합 구하기
//단,0이 입력되면 반복 종료 후 결과 출력
//->0이 입력되지 않으면 계속반복
Scanner sc = new Scanner(System.in);
int input = 1;
int sum = 0;
while(input != 0) {
System.out.print("정수 입력 : ");
input = sc.nextInt();
sum += input; //입력받은 sum 누적
}
System.out.println("합계 : " + sum);
}
public void ex3() {
//1부터 입력한 값의 합
//단, 0을 초과한 숫자 입력
// => 0이하의 숫자를 입력할 시 "1이상의 숫자를 입력해주세요" 문구 출력
//EX) 입력값 : 5
// => 1 + 2 + 3 + 4 + 5 = 출력해야하는 값
//EX) 입력값 : 10
// => 1 + 2 + 3 .... + 10 = 출력해야하는 값
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요 :");
int input = sc.nextInt();
int sum = 0;
if(input > 0) {
int i = 1;
while(i <= input) {
sum += i;
i++;
}
System.out.println("1부터" + input + "까지의 합은 " + sum + "입니다.");
}else {
System.out.println("1이상 숫자를 입력하세요");
}
}
💡 for & while 문은 조건식이 처음에 제시되므로 한 번도 실행이 안될 수 있음.
do {
수행될 코드;
[증감식 or 분기문];
} while(조건식);
do 안의 내용 먼저 실행 -> 조건식 확인 후 true면 -> 문장 수행, false면 종료
💡 { } 안에 조건을 벗어나게 할 연산(증감식, 분기문) 필요
💡 while과 do~while의 차이점
- do~while은 조건문이 true가 아니더라도
- 그는 무조건 한 번 이상 수행
- while 뒤에 ; 꼭 필요
int i = 1;
do {
System.out.println(i + "출력");
i++;
} while(i <= 10);
public void ex4() {
Scanner sc = new Scanner(System.in);
int input = 0;
int sum = 0;
//do ~while 문
// -> 최소 한 번은 수행하는 반복문
do {
System.out.print("정수 : ");
input = sc.nextInt();
sum += input;
}while(input != 0);
System.out.println("합계: " + sum);
}