0617. Eclipse import, Switch문, 반복문

24772 단어 JAVA기초JAVA기초

프로젝트 생성부터 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 (조건) ---------;

조건이 참일 경우 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++) {
  코드 
}

순서

  1. 변수초기화 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);

좋은 웹페이지 즐겨찾기