0617. Eclipse import, Switch문, 반복문
프로젝트 생성부터 Eclipse IDE로 import까지
1. 빈 폴더 생성
$mkdir myproject
2. 생성한 폴더를 자바 애플리케이션 프로젝트 폴더로 설정
myproject $ gradle init
myproject/ settings.gradle
app/
src/
build.gradle
-
myproject/– root project
-
app/ - sub project
3. Eclipse IDE 용 프로젝트로 전환
java, eclipse gradle 플러그인 설정 -> build.gradle 편집
각 플러그인 동작 제어 -> build.gradle 편집
Eclipse 설정파일 생성 -> $gradle eclipse
4. Eclipse IDE로 프로젝트 import
메뉴 > file > import > existing project > build.gradle 파일이 존재하는 폴더 선택 > finish
keyboard 입력받기
콘솔에서 키보드 입력 받아서 코드 진행하려면?
Scanner keyScan = new Scanner ( System.in )
-
keyScan – 도구를 가리키는 변수
-
Scanner – 키보드로 입력한 값을 특정 타입의 값으로 꺼내주는 도구
-
System.in - 키보드 정보
도구 사용볍 => keyScan.기능명( );
keyScan.nextInt( ); - 키보드 입력값 읽어서 4byte 정수로 변환
keyScan.nextLine( ); - 키보드 입력값 한 줄 읽어서 문자열로 변환
Switch 문
흐름제어문
if else를 사용하는 것보다 더 간단하고 깔끔하게 코드 처리 가능
단 간단한 값이 입력되었을 때만 사용하는 것이 좋음
int 값 = keyScan.nextInt();
switch (값) { // 위에서 값으로 Int를 받아서 값에는 4byte int 값만 가능
case 값 : // switch의 값과 일치하는 case의 코드 실행
. . .
break;
default : // switch의 값과 일치하는 값이 없으면 default의 코드 실행
. . .
조건문에 입력하는 값이 int 처럼 단순 숫자나 문자열처럼 단순할 경우 switch 문 활용
아니라면 if else 문 활용
switch 의 값은 위에서 정한 변수
case 의 값은 위에서 변수에 할당한 데이터타입만 가능
default 의 코드는 입력받은 값이 switch문의 case값에 해당하지 않을 때 실행됨
값으로 가능한 데이터 타입
int 정수(byte,short,int,char), 문자열, 특별한 상수 Enum 타입
case 값으로 변수를 사용할 수 없음! 리터럴만 가능
long 처럼 4byte를 넘어가는 정수나 실수(부동소수점)는 사용할 수 없음
응용 - break 없는 switch 문
만약 출력할 코드마다 일치하는 값이 존재한다면 break 없이 이용할 수 있음
System.out.println("제출하실 서류는 다음과 같습니다.");
switch (no) {
case 1:
System.out.println("정보처리자격증");
case 2:
System.out.println("졸업증명서");
case 3:
System.out.println("이력서");
break; // 여기까지만 실행한다.
default:
System.out.println("올바른 번호를 입력하세요!");
전체에 공통으로 출력되는 코드를 제일 하단에, 일부에만 공통되는 코드를 상단에 배치
break를 제일 마지막의 case문에만 배치
아예 안넣어버리면 맨 마지막의 default의 코드까지 다 출력되어버림
일치하는 값의 case로 들어가서 제일 하단의 break를 만날때까지 전부 출력
ex.no 값으로 2 입력시?
제출하실 서류는 다음과 같습니다.
졸업증명서
이력서
응용 – 상수 이용
상수를 사용하지 않으면?
값의 의미를 주석으로 달아줘야 다른 개발자가 이해할 수 있음
없으면 -> 해당 case가 뭘 의미하는지 모름
상수로 값을 지정해 코드에서 바로 이해할 수 있게함
final int
final int 로 상수를 설정해서 case값이 의미하는 것을 나타내줌
final int GUEST = 0, MEMBER = 1, ADMIN = 2;
!! final 이 없는 그냥 int 는 사용할 수 없다
case의 값으로 변수는 사용불가! 상수만 가능
enum Level
상수를 좀 더 조직적으로 관리하는 방법
enum을 사용하여 상수를 정의
nested enum은 기본이 static -> 선언 시 static을 생략해도 된다.
enum Level {
GUEST, MEMBER, ADMIN
}
switch (level) {
case GUEST:
System.out.println("조회만 가능합니다.");
break;
case MEMBER:
System.out.println("글작성 가능합니다.");
break;
case ADMIN:
System.out.println("다른 회원의 글을 변경, 삭제할 수 있습니다.");
break;
}
enum으로 정의된 상수를 사용하려면 enum 타입의 변수를 선언
final int처럼 직접 값을 지정하지 않아도 됨
값을 직접 지정할 수도 있음
enum을 사용하는 주된 이유는?
100, 200, "admin" 과 같이 값을 직접 지정할 필요 없음
enum 변수에는 그 타입에 정의된 값만 저장할 수 있음
Level type에 올 수 있는 것은 enum Level에 적힌 상수만 가능
상수 전용 문법을 이용해 좀 더 확실하고 보기쉬운 코드 생성
반복문
1.
while (조건) ---------;
while (조건) {
--------
}
// 조건이 참일 때 참인 동안 문장을 계속 실행
2.
do ------;
while (조건);
do {
-----
} while (조건); // 일단 실행 후 반복할지 결정 = 최소 한번은 코드가 실행됨
3.
for(변수) 조건 증감문 --- ;
for (변수) 조건 증감문 {
-------
}
4.
for (변수) 배열 컬렉션 ----;
for (변수) 배열 컬렉션 {
----
}
while 반복문
while (조건) ---------;
1.
while (조건) ---------;
while (조건) {
--------
}
// 조건이 참일 때 참인 동안 문장을 계속 실행
2.
do ------;
while (조건);
do {
-----
} while (조건); // 일단 실행 후 반복할지 결정 = 최소 한번은 코드가 실행됨
3.
for(변수) 조건 증감문 --- ;
for (변수) 조건 증감문 {
-------
}
4.
for (변수) 배열 컬렉션 ----;
for (변수) 배열 컬렉션 {
----
}
while (조건) ---------;
조건이 참일 경우 while내의 코드를 실행하는데 조건이 참일때까지 계속해서 반복 실행
break 와 continue 활용
-
continue : if 와 함께 사용해서 if의 조건에 만족하면 continue 밑의 코드를 실행하지 않고 다시 while문 초반으로 돌아감
-
break : if와 함께 사용해서 조건 만족시 그 즉시 while문을 종료하고 나감
둘을 함께 사용하면 더 편리한 반복문 작성 가능
count = 0;
sum = 0;
while (count < 100) {
count++;
if (count > 50) // 50을 넘어가면 합을 수행하지 않지만 100까지 계속 반복한다.
continue;
sum += count;
}
System.out.printf("count=%d, sum=%d\n", count, sum);
while (count < 100) {
count++;
if (count > 50)
break; // 즉시 반복문을 종료하고 나간다.
sum += count;
}
System.out.printf("count=%d, sum=%d\n", count, sum);
최종 출력 결과를 보면 continue만 사용할 경우엔 count = 100
break를 사용한 경우엔 count = 51이 됨
51이 된걸 확인하고 바로 나오는것이기때문에
중첩된 반복문 탈출
break는 자신이 소속된 가장 가까운 반복문만 탈출함
while (x <= 9) {
while (y <= 9) {
System.out.printf("%d * %d = %d\n", x, y, x * y);
if (x == 5 && y == 5)
break; // 이 break는 자신이 소속된 가장 가까운 반복문을 나간다.
y++;
}
System.out.println();
x++;
y = 1;
}
x=5인 5단만 y=5인 5 * 5 = 25 까지 출력하고 빠져나감
다시 x의 반복문으로 들어가 x = 6 인 6단부터 재출력
바깥의 반복문까지 나가지진 않음
한번에 반복문을 탈출하려면? 라벨 활용
break 에 라벨을 붙여주면 해당 라벨에 소속된 반복문을 탈출하게됨
한번에 원하는 문장까지 탈출 가능
라벨명: 반복문1 { 반복문2 {break 라벨명;}}
라벨 문법:
라벨: 문장;
라벨: {문장1, 문장2, ...}
break 라벨
do ~ while 반복문
코드를 먼저 실행하고 while 문에 들어감 - 최소 한 번은 반복
- 한 번 이상 반복하면 do ~ while
- 0 번 이상 반복하면 while
do
문장1;
while (조건);
do {
문장1;
문장2;
문장3;
} while (조건);
for 반복문
for (int i = 1; i <=5; i++) {
코드
}
순서
- 변수초기화 int i =1 -> 2. 조건 i <=5 -> 3. 코드 -> 4. 변수증가문 i++
1 2 3 4 실행 후 다시 2로 돌아가 조건이 참이면 다시 3 4 반복
for (변수선언 및 초기화; 조건; 증감문) 문장;
for (변수선언 및 초기화; 조건; 증감문) {문장1; 문장2; ...}
for 옆의 각 요소를 비워두고도 사용 가능 for (;;)
for문 내에서 선언된 변수는 for문 내에서만 사용가능
for 문 종료 후 사용하려하면 컴파일 오류 발생
for문 밖에서 변수를 선언하고 들어와야 밖에서도 사용 가능
for 문 중첩
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + " ");
if (j == 5)
break; // break 소속된 현재 반복문을 멈춘다.
}
System.out.println();
}
for 중첩과 break
break는 현재 소속된 반복문을 중지
중첩된 반복문 중 가장 가까운 for문 탈출 가능
for(;;) 와 배열
for문과 배열을 함께 사용해 배열의 특정 조건의 값들을 한번에 추출할 수 있음
배열의 처음부터 끝까지 값을 꺼낼 때
for (배열에서 꺼낸 값을 저장할 변수 선언 : 배열주소) 문장;
for (String name : names)
System.out.println(name);
for (:)
배열 전체를 반복하거나 컬렉션(collection) 객체 전체를 반복할 때 유용
배열의 일부만 반복할 수 없음
배열의 값을 다룰 때 인덱스를 사용할 필요가 없어 편리
문법
for (변수 선언 : 배열, Iterable 구현체) 문장1;
for (변수 선언 : 배열, Iterable 구현체) { 문장1; 문장2; ...}
변수의 타입은 배열이나 Iterable 구현체의 항목 타입과 같아야함
반복문을 돌 때 마다 항목을 값을 꺼내 변수에 담기
이렇게 사용할 경우 변수 선언은 무조건 for문 내에서만 가능
밖에서 선언한 변수 사용시 오류 발생
String name;
for (name : names) // 컴파일 오류!
System.out.println(name);
for 반복문과 컬렉션
- 배열 : 같은 타입의 값만 보관, 크기 고정
- 컬렉션 : 다른 타입의 값도 보관 가능, 크기 가변적
컬렉션을 이용해 꺼내면 값을 넣는만큼 크기가 변경
ArrayList list = new ArrayList();
list.add(“A”);
. . .
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i));
// 위에서 넣은 list를 순서대로 전부 출력 가능
for문 내에 컬렉션 적용 가능
for (변수 선언 : 컬렉션객체) 문장;
for (Object value : list)
System.out.println(value);
Author And Source
이 문제에 관하여(0617. Eclipse import, Switch문, 반복문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyunn12/0617-switch-while저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)