제어문
1) 조건문
- if
선언 기본문) if(조건식){ 실행할 문장 }
중첩문) (a꼴) if(조건식){} (b꼴) if(조건식){}
if(조건식){} else if(조건식){}
if(조건식){} else{}
// 모든 조건을 검사할 때 // 한가지만 검사해도 될 때
- switch
선언 switch(변수명){
case 값 : 내용 break;
case 값 : 내용 breka;
...
default :
}
package day05;
import java.util.Scanner;
public class IfTest {
public static void main(String[] args) {
String n1Msg = "첫번째 정수:";
String n2Msg = "두번째 정수:";
int num1=0, num2=0;
Scanner sc = new Scanner(System.in);
System.out.println(n1Msg);
num1 = sc.nextInt();
System.out.println(n2Msg);
num1 = sc.nextInt();
if(num1 > num2) {
System.out.println("첫번째 정수가 더 큽니다");
}else if(num1 == num2) {
System.out.println("두 수가 같습니다");
}else {
System.out.println("두번째 정수가 더 큽니다");
}
}
}
package day05;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
String q = "Q. 오늘은 당신의 생일입니다. 친구에게 상자를 선물로 받았습니다. \n"
+"이 상자 안에는 무엇이 들어 있었을 까요?\n 나가기 q"
+"1. 꽃\n"
+"2. 손수건\n"
+"3. 깜짝 상자\n"
+"4. 보석\n";
String answer1 = "꽃 : 당신은 거짓말을 못해서 안합니다.";
String answer2 = "손수건 : 당신은 너무 정직한 사람입니다.";
String answer3 = "깜짝상자 : 당신은 눈하나 깜짝 안하고 거짓말을 하는 사람입니다.";
String answer4 = "보석 : 당신은 때에 따라 가끔씩은 거짓말을 합니다";
String choice = "";
while(true){
System.out.println(q);
Scanner sc = new Scanner(System.in);
choice = sc.next();
if(choice.equals("q")) { System.out.println("종료"); } //문자열은 관계연산자로 비교할 수 없어 == 은 주소를 비교하기 때문에
switch(choice) {
case "1": System.out.println(answer1);
break;
case "2": System.out.println(answer2);
break;
case "3": System.out.println(answer3);
break;
case "4": System.out.println(answer4);
break;
case "q":
default: System.out.println("?");
}
}
}
}
2) 반복문
- for
선언 for (초기값; 조건식; 증감량){
반복할 내용
}
- while
선언 while(조건식){
반복할 내용
}
또는
do{
반복할 문장
}while(조건식);
* for문과 while문의 차이는 '변수'에 있다. 변수값의 증감량을 처리해야 할 때는 for문
while문은 단순 반복에 쓰이는데 이 때, 조건식에 true를 넣으면 while문 안의 내용이 무한반복되는 것을 이용할 수 있다.
위의 심리테스트 예제에서 while(true)로 switch문을 반복시켜 답을 선택하면 초기 문제로 돌아가는 것을 볼 수 있다.
package day05;
public class ForTest {
public static void main(String[] args) {
//1~100까지 출력
for(int i = 0; i < 100; i++) {
System.out.println(i+1);
}
//100~1까지 출력
for(int i = 0; i < 100; i++) {
System.out.println(100-i);
}
for(int i = 100; i > 0; i--) {
System.out.println(i);
}
//1~100까지 짝수만 출력
for(int i = 0; i < 101; i+=2) {
System.out.println(i);
}
//1~100까지 홀수만 출력
for(int i = 1; i < 100; i++) {
if(i%2==1) {
System.out.println(i);
}
}
//1~100까지의 수 중 3과 5의 공배수 구하기
for(int i = 0; i < 100; i++) {
if(i%3==0 && i%5==0) {
System.out.println(i);
}
}
//A~E까지 출력
for(int i =0; i < 5; i++) {
System.out.println((char)(65+i));
}
for(char i = 'A'; i < 'E'; i++) {
System.out.println(i);
}
}
}
계산기 예제
package day05;
import java.util.Scanner;
public class NewCalc {
public static void main(String[] args) {
String menuMsg = "1. 계산하기 \n 2. 나가기 \n";
int num1 = 0, num2 = 0;
String oper = "";
String result = "";
int choice = 0;
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println(menuMsg);
choice = sc.nextInt();
if(choice == 2) break;
if(choice != 1) continue; //다음 반복으로 넘어간다.
num1 = Integer.parseInt(sc.next());
oper = sc.next();
num2 = Integer.parseInt(sc.next());
switch(oper) {
case "+" :
result = ""+(num1+num2);
break;
case "-" :
result = ""+(num1-num2);
break;
case "/" :
if(num2 !=0) {
result = ""+(num1/num2);
}else{
result = "0으로 나눌 수 없습니다";
}
break;
case "*" :
result = ""+(num1*num2);
break;
default : System.out.println("사칙연산 외의 연산자는 사용할 수 없습니다.");
}
System.out.println("결과: "+result);
}
}
}
'JAVA' 카테고리의 다른 글
DAY07; 배열 (0) | 2019.08.11 |
---|---|
DAY06; while/ if / switch문의 사용 예제 (0) | 2019.07.20 |
DAY04; 연산자 (0) | 2019.07.16 |
DAY 03; Scanner 클래스의 사용 (0) | 2019.07.15 |
DAY 02; 변수와 출력함수 (0) | 2019.07.14 |