일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코딩테스트
- 정보처리기사
- Oracle
- 국비IT
- 국비코딩
- 자바스크립트
- spring
- 자바의정석
- 정보처리기사정리
- ReactNative
- 자스코테
- 타입스크립트
- 스프링
- CSS
- 이안의평일코딩
- javascript
- 정보처리기사실기
- 자바스크립트 코딩테스트
- 정보처리기사실기정리
- Java의정석
- 정보처리기사실기요약
- 정보처리기사요약
- php
- 리액트네이티브
- 오라클
- 리액트
- typescript
- VUE
- react
- 평일코딩
- Today
- Total
이안의 평일코딩
JAVA의 정석 11일차 - do~while, break, continue, 중첩 for문 본문
2020.06.29(월)
1. do~while => 반드시 한 번 이상을 수행해야 할 때
1) 형식
초기값 ==> int i = 1; ① 한 번만 수행
do {
//반복 수행문장 출력
System.out.print(i+" "); ②
//증가식
i++; ③
} while(조건식); ==> i<=5; ④
i=1
1 // i++ (i=2) -> i<=5 비교 true -> do안으로 이동
i=2
1 2 // i++ (i=3) -> i<=5 비교 true -> do안으로 이동
.
.
i=5
1 2 3 4 5 // i++ (i=6) -> i<=5 비교 true -> do안으로 이동
2) 구구단
import java.util.*;
public class 구구단 {
public static void main(String[] args) {
// 변수 설정
int user = 0; // 사용자가 입력한 값 저장 메모리 공간
int i = 1; // 1~9까지 변경하는 변수 -> 9번 수행
// 키보드 입력값 받기 (BufferedReader -> 예외처리)
Scanner scan = new Scanner(System.in);
// 모든 클래스는 메모리에 저장할 때 new 이용한다
// 예외 -> Math.random() -> static메소드 : 시작과 동시에 자동 저장
System.out.print("2~9까지 사이의 정수 입력:");
공백, 엔터시에 값을 메모리 저장
user=scan.nextInt();
// 사용자가 키보드로 입력한 정수를 읽어와서 저장 -> user라는 공간
do {
// printf -> %n, \n -> 다음줄에 출력
// print, println -> \n
System.out.printf("%d * %d = %d\n",user,i,user*i);
i++;
}while(i<=9);
}
}
2. 반복제어문
- break -> 반복문을 종료할 때
- continue -> 특정부분을 제외하고 싶은 경우
- 조건문과 같이 사용한다 (if)
- * break, continue는 한개의 반복문만 제어할 수 있다
* break -> 반복문 전체 (for, do~while, while), switch
* continue -> 반복문에서만 사용이 가능
* return -> 보류 (메소드 종료)
* break -> while, for, do~while이 동일
* continue -> while(조건식으로 이동),
for(증가식으로 이동)
> 1~10까지 출력 -> 5일때 종료 -> break; (1~4만 출력)
for(int i=1; i<=10; i++) {
// 조건문 5일때
if(i=5)
// 종료
break; // 1=5면 반복문 종료
System.out.print(i+" ");
}
==> 1 2 3 4
vs 출력을 먼저 위로 올리면 순차적으로 출력되기 때문에 동일해짐
for(int i=1; i<=10; i++) {
System.out.print(i+" ");
if(i=4)
break;
}
==> 1 2 3 4
> 1~10까지 홀수만 출력
for(int i=1; i<=10; i++) {
// 조건문
if(i%2!=0) // i%2==0(짝수)
// i%2!=(홀수) i%2==1(홀수) !(i%2==0) (홀수)
System.out.print(i+" ");
}
=>1 3 5 7 9
// 증가 => 2
System.out.print("\n=== 2씩증가 ===");
for(int i=1; i<=10; i+=2) {
System.out.print(i+" ");
}
=>1 3 5 7 9
// continue 사용
System.out.print("\n=== continue ===");
for(int i=1; i<=10; i+=2) {
if(i%2==0)
continue; //짝수만 제외 i++로 이동
//증가식으로 이동
System.out.print(i+" ");
}
=>1 3 5 7 9
1) updown 게임 -> 잘못된 입력 -> 성적 계산
게임 -> 입력 관련 -> continue, 종료 -> break;
숫자를 맞출때까지 게임을 계속 -> while
import java.util.*;
public class updown {
public static void main(String[] args) {
// 임의의 숫자를 저장 -> 난수(com)
// 1~100사이의 임의 수를 추출
int com = (int)(Math.random()*100)+1;
// 0.0~0.99 -> 0.0~99.0 -> 0~99+1 -> 1~100
// main => 재사용이 불가능하다
// 프로그램은 프로그래머가 명령을 한 순서로 진행
// 한줄씩 수행한다
// 무한루프 => 횟수가 지정이 없는 경우
Scanner scan = new Scanner(System.in);
while(true) {
// 사용자의 입력값을 받아 본다
System.out.print("1~100까지의 사이의 정수 입력:");
int user=scan.nextInt();
if(user<1 || user>100) {
System.out.println("잘못된 입력값입니다");
// 처음부터 다시 수행, 정수 입력창으로 돌아감.
continue;
}
count++;
// 정상 수행
// 비교
if(user>com) {
System.out.println("입력값보다 낮은 정수를 입력하세요");
}
else if(user<com) {
System.out.println("입력값보다 높은 정수를 입력하세요");
}
else {
System.out.println("Game Over!!");
System.out.println("도전 횟수:"+count);
break; // System.exit(0)
// 반복문 종료
}
}
}
}
3. 중첩 for문
1) 형식
for (초기값; 조건식; 증가식) {
for (초기값; 조건식; 증가식) {
반복 수행문장
}
}
2) 실행순서
1 2 4
for (초기값; 조건식; 증가식) {
3
====================
1 2 4
for (초기값; 조건식; 증가식) {
3
반복 수행문장
}
====================
}
3) 예 // 총 9번 반복
for (int i=1; i<=3; i++) { // 세로 출력 (줄 수) (행)
for (int j=1; j<=3; j++) { // 가로 출력 (열)
System.out.println("i="+i+",j="+j);
}
}
i=1 -> j=1, j=2, j=3 -> i++
i=2 -> j=1, j=2. j=3 -> i++
i=3 -> j=1. j=2, j=3 -> i++ // i=4 종료
ex) 구구단
줄 수: 2~9 -> 1차 for문 8개
갯수: 1~9 -> 2차 for문 9개
2*1=2 ==== 9*1=9
. . . .
2*9=18 ==== 9*9=81
for (int i = 1; i<=9; i++) { //줄수 -> 행
for (int j = 2; j<=9; j++) { //구구단 출력 위치
System.out.printf("%2d * %2d = %2d\t",j,i,j*i);
}
System.out.println();
}
ex) 별찍기
1차 for문 4개 (행)
2차 for문 5개 (열)
*****
*****
*****
*****
for (int i = 1; i<=4; i++) {
for (int j = 1; j<=5; j++) {
System.out.print("*");
}
//다음줄에 출력
System.out.println();
}
4) 연습문제
(1) 1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
for (int i = 1; i<=5; i++) {
// 출력
for (int j = 1; j<=5; j++) {
System.out.printf("%2d\t",i);
}
System.out.println();
}
(2) A A A A A
B B B B B
C C C C C
D D D D D
E E E E E
for (int i = 1; i<=5; i++) {
for (int j = 1; j<=5; j++) {
System.out.printf("%2c\t",i+64);
}
System.out.println();
}
또는
for (char i = 'A'; i<='E'; i++) {
for (int j = 'A'; j<='E'; j++) {
System.out.printf("%2c\t",i);
}
System.out.println();
}
3) 1####
#2###
##3##
###4#
####5
for(int i=1; i<=5; i++) {
for(int j=1; j<=5; j++) {
// 출력
if(i==j)
System.out.print(i);
else
System.out.print("#");
}
// 다음 출력
System.out.println();
}
4) 25 24 23 22 21
20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
int count = 25;
for(int i=1; i<=5; i++) {
for(int j=1; j<=5; j++) {
System.out.print("%2d\t",count);
count--;
}
System.out.println();
}
5) A
AB
ABC
ABCD
ABCDE
char c = 'A';
for(int i=1; i<=5; i++) {
c = 'A';
for(int j=1; j<=i; j++) {
System.out.prinf(c);
c++;
}
System.out.println();
}
6) ABCDE
ABCD
ABC
AB
A
수열 줄수(i) 알파벳(j)
* 1 5 i+j=6 -> j=6-i
* 2 4
* 3 3
* 4 2
* 5 1
*
*
* i=1 -> j=1, j=5 (6-i) -> 5 ABCDE
* i=2 -> j=1, j=4 -> 4 ABCD
* i=3 -> j=1, j=3 -> 3 ABC
* i=4 -> j=1, j=2 -> 2 AB
* i=5 -> j=1, j=1 -> 1 A
char c = 'A';
for(int i=1; i<=5; i++) {
c = 'A';
for(int j=1; j<=6-i; j++) {
System.out.prinf(c);
c++;
}
System.out.println();
}
7-1) *****
****
***
**
*
줄수(i) 공백(j) 별표(k)
1 0 5
2 1 4
3 2 3
4 3 2
5 4 1
===============
i와 j의 관계 -> j+1=i -> j=i-1
i와 k의 관계 -> k+i=6 -> k=6-i
for(int i=1; i<=5; i++) {
for(int j=1; j<=i-1; j++) {
System.out.print(" ");
}
for(int k=1; k<=6-i; k++) {
System.out.print("*");
}
System.out.println();
}
7-2) *****
****
***
**
*
for(int i=1; i<=5; i++) {
for(int j=1; j<=6-i; j++) {
System.out.print("*");
}
System.out.println();
}
8) *
**
***
****
*****
줄수(i) 공백(j) 별표(k)
1 4 1
2 3 2
3 2 3
4 1 4
5 0 5
===============
i와 j의 관계 -> i+j=5 -> j=5-i
i와 k의 관계 -> k=i
for(int i=1; i<=5; i++) {
for(int j=1; j<=5-i; j++) {
System.out.print(" ");
}
for(int k=1; k<=i; k++) {
System.out.print("*");
}
}
9) 1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
1차 for -> 5 -> 1~5
2차 for -> 1-1, 2-2, 3-3, 4-4, 5-5
1 1 -> i=j -> j<=i
2 2
3 3
4 4
5 5
for (int i=1; i<=5; i++) {
for (int j=1; j<=i; j++) {
System.out.print(i); // i행에 맞춰서
}
System.out.println();
}
10) 1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
for (int i=1; i<=5; i++) {
for (int j=1; j<=i; j++) {
System.out.print(j); // j열에 맞춰서
}
System.out.println();
}
11) 1 1 1 1 1
2 2 2 2
3 3 3
4 4
5
줄수 ????
1 5
2 4
3 3
4 2
5 1
for (int i=1; i<=5; i++) {
for (int j=1; j<=6-i; j++) { // i+j=6
System.out.print(i); // i열에 맞춰서
}
System.out.println();
}
12) 1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
//왼쪽에 공백이 있으면 변수 3개씀 i줄,j공" ",k수or별
for (int i=1; i<=5; i++) {
for (int j=1; j<=5-i; j++) {
System.out.print(" ");
}
for (int k=1; k<=i; k++) {
System.out.print(k);
}
System.out.println();
}
13) 입력값 별찍기
import java.util.*;
public class 별찍기 {
public static void main(String[] args) {
// 사용자 입력값
int user = 0;
Scanner scan = new Scanner(System.in);
System.out.print("정수 입력>");
// user에 저장
user = scan.nextInt(); // 줄수
for (int i = 1; i<=user; i++) {
for (int j = 1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
=>
*
**
***
****
*****
for (int i = 1; i<=user; i++) {
for (int j = 1; j<=user+1-i; j++) {
// for (int j = 0; j<=user-i; j++)
System.out.print("*");
}
System.out.println();
}
=>
*****
****
***
**
*
}
}
14) [1,1] [1,2] [1,3] [1,4]
[2,1] [2,2] [2,3] [2,4]
[3,1] [3,2] [3,3] [3,4]
[4,1] [4,2] [4,3] [4,4]
[5,1] [5,2] [5,3] [5,4]
for (int i=1; i<=5; i++) {
for (int j=1; j<=4; j++) {
System.out.printf("[%d,%d]",i,j);
}
System.out.println();
}
4. forEach : 향상된 for문 -> 출력용 -> web, mobile ==> front-end
====== 1) 배열, 2) 컬렉션 -> 데이터가 묶여 있는 상태
for(데이터형 변수: 배열, 컬렉션)
int[] arr= {1,2,3,4,5}; // -> arr[0] -> 1
for(int i=0; i<5; i++) {
System.out.print(arr[i]+" ");
}
=> 1 2 3 4 5
// 출력을 할때 => jdk 1.5이상에서만 사용 가능
int[] arr= {1,2,3,4,5};
for(int i:arr) {
System.out.print(i+" ");
}
=> 1 2 3 4 5
'Back-end > Java' 카테고리의 다른 글
JAVA의 정석 12일차 - 배열 (10) | 2020.06.30 |
---|---|
JAVA의 정석 - 변수, 데이터, 연산자, 제어문 복습 (0) | 2020.06.29 |
JAVA의 정석 10일차 - 반복문 while (0) | 2020.06.26 |
JAVA의 정석 9일차 - 반복문 for (0) | 2020.06.25 |
JAVA의 정석 8일차 - 다중조건문 & 선택문 (0) | 2020.06.24 |