if (조건) {실행 한 개;} else {실행 한 개;}
switch(변수 또는 변수를 포함한 연산식) {case 값: 처리문 break; default : 처리문}
import java.util.Scanner;
public class SwitchStringExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("직책을 입력 해 주세요. ");
String position = scanner.nextLine();
// String position ="과장"; // 수정 전 코드
// java 6버전부터 문자열 비교를 해준다. 6버전 미만은 문자열은 사용하지 못한다.
switch(position) {
case "부장": // position = 부장인 경우 이동해서 실행된다. 틀리면 다음 case나 default를 찾아간다.
System.out.println("700만원");
break; // switch문을 빠져나간다
case "과장": // position = 과장인 경우 이동해서 실행된다. 틀리면 다음 case나 default를 찾아간다.
System.out.println("500만원");
break; // switch문을 빠져나간다
default : // case외의 다른 값인 경우 이동해서 실행된다.
System.out.println("300만원");
break; // switch문을 빠져나간다 (default는 break 생략가능)
}
scanner.close();
}
}
예제는
scanenr
메서드를 쓰지 않았으나, 추가해서 직접 직책을 입력할 수 있게 코드를 수정 해 보았다.
import java.util.Scanner;
public class BoardController {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("선택할 항목의 번호를 입력 해주세요.");
System.out.println("1.리스트, 2.글보기, 3.글쓰기, 4.글수정, 5.글삭제, 0.종료");
System.out.print("입력 >> ");
String menu = scanner.nextLine();
// 이동 라벨 정의 - switch, for, while문 바로 위에 정의.
//break 라벨이름; - 라벨 이름 바로 밑에 있는 구문을 빠져나간다.
// switchLoop:
switch (menu) {
case "1":
System.out.println("리스트");
break;
case "2":
System.out.println("글보기");
break;
case "3":
System.out.println("글쓰기");
break;
case "4":
System.out.println("글수정");
break;
case "5":
System.out.println("글삭제");
break;
case "0":
System.out.println("종료");
// break switchLoop; // 종료하는방법1. 자바 응용 프로그램을 완전히 종료한다.
// return; // 종료하는방법2. 메서드를 빠져나간다.
System.exit(0); // 종료하는방법3.
default:
System.out.println("잘못 입력 하셨습니다.");
break;
}
}
}
입력되는 값에 숫자를 썼으나, 연산하거나 하는 활동을 하지 않아서 Integer로 변환하지 않고 String 타입을 그대로 사용 하였다. 단순히
break;
를 사용해서 종료를 하게 되면 for문이나 while문 같은 반복문이 무한 루프에 빠질 수 있기 때문에 응용프로그램을 완전히 종료하는 것이 좋다. 이 때 쓰는 방법은switchLoop
를 사용하거나,System.exit(0);
을 쓰거나(생성자 안에는 0을 사용해야 완전히 빠져나감, 아무 숫자나 쓰지 말 것), 메인 메서드로 돌아가는return;
을 사용하면 된다.
for (초기값; 반복 실행 조건; 증감값) {처리문}
(int i=1; i<=10; i++)
scores[i]
for(int score : score)
// 1부터 10까지 출력하는 프로그램
public class ForPrintFrom1To10Example {
public static void main(String[] args) {
// 반복문 처리의 변수는 i,j,k... 로 사용한다.
// for (초기값; 반복처리조건; 증감)
for (int i=1; i<=10; i++) {
System.out.println(i);
}
// System.out.println(i);
// for문 밖에서는 for문 안에서 선언된 변수를 사용할 수 없다.
int i = 1; // 초기값
for(; i<=10; i++) { // for(; 조건; 증감)
System.out.println(i);
}
// for문 밖에서 선언 됐으므로 변수 i사용가능.
System.out.println(i);
i = 1; // 초기값
for(; i<=10;) { // for(; 반복처리조건 ;)
// 처리
System.out.println(i);
// 증감
i++;
}
i = 1;
for(;;) { // for(;;) - 무한 반복
// 빠져나가는 조건
// break; - switch, for, while문을 빠져나간다.
if(i > 10) // i가 10보다 커지면
break; // 빠져나가라.
System.out.println(i);
i++;
}
}
}
for문은 초기값과, 반복처리조건, 증감값을 넣는데 초기값과 증감값은 for문 밖에서 선언이 가능하다. 그리고 반복 처리 조건을 생략 하게 되면 무한 반복을 하게 되므로, 꼭 빠져나갈 수 있는 코딩을 해줘야 한다.
while (반복 실행 조건) {처리문}
while(true)
빠져나가려면 if(!(반복조건)) break;
System.exit(0)
public class WhileSumFrom1To100Example {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while(i<=100) {
sum += i;
i++;
}
System.out.println("1~"+(i-1)+"합 : "+sum);
}
}
while문의 무한반복은
while(true)
라고 작성하면 되고, while문 안에if(조건) break;
를 넣어주면 조건을 만족할 시 프로그램은 종료된다.
import java.util.Scanner;
public class BoardController2 {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
// 무한 반복 시작
while (true) {
System.out.println("선택할 항목의 번호를 입력 해주세요.");
System.out.println("1.리스트, 2.글보기, 3.글쓰기, 4.글수정, 5.글삭제, 0.종료");
System.out.print("입력 >> ");
String menu = scanner.nextLine();
switch (menu) {
case "1":
System.out.println("리스트");
break;
case "2":
System.out.println("글보기");
break;
case "3":
System.out.println("글쓰기");
break;
case "4":
System.out.println("글수정");
break;
case "5":
System.out.println("글삭제");
break;
case "0":
System.out.println("종료");
System.exit(0); // 시스템 종료.
default:
System.out.println("잘못 입력 하셨습니다.");
break;
} // end of switch
} // end of while
} // end of main()
} // end of BoardController2 class
위에서 만들어봤던 switch문에 while문을 추가해서 0번을 입력하기 전까지 무한반복 하는 프로그램을 만들어 보았다. 1번부터 5번까지 선택 했을 시 종료가 되고, 잘못 입력 되었을 때만 반복할 수 있는 프로그램은 어떻게 해야 할 지 생각을 해 봐야겠다. (1번부터 5번 case에 전부 종료 메서드를 달아야 하는지..?)
import java.util.Scanner;
// while 반복문 안에서 실행 결과에 따라 반복할지말지에 대한 데이터 변경이 되고 있다.
// 먼저 반복문으로 들어가고 조건을 나중에 물어보는 do{}
public class DoWhileExample {
public static void main(String[] args) {
System.out.println("메세지를 입력하세요.");
System.out.println("프로그램을 종료하려면 \"q\"를 입력하세요");
Scanner scanner = new Scanner(System.in);
String inputString; // 입력받을 문자열 변수 선언.
do {
System.out.print(">");
inputString = scanner.nextLine();
System.out.println(">"+inputString);
} while (!inputString.equals("q")); // q가 아니면 반복처리, q면 반복을 멈춤.
scanner.close();
System.out.println("프로그램 종료");
} // end of main()
} // end of DoWhileExample class
한 번이라도 실행되게 만드려면
do-while
문을 사용 하면 된다.break;
는break;
가 포함된 switch, for, while문만 빠져나갈 수 있다.
public class DoublePrintExample {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 4 != 0) {
continue; // 4의 배수가 아니면 반복 처리 되는 시작 위치로 올라간다.
} // end of if
System.out.println(i); // 4의 배수가 맞다면 밑으로 내려와서 출력.
} // end of for
} // end of main()
} // end of class
for(int i = 4; i <=10; i += 4) System.out.println(i)
이렇게 한 줄로 짜게 되면 프로그램을 최소한으로 돌려서 같은 결과를 나오게 할 수 있다. 코딩에 정답은 없고 먼저 생각나는걸로 코딩을 해서 일단 프로그램이 돌아가서 올바른 결과값이 나온다면, 그 다음에 코드를 수정하는 것이 좋다.