Notice
Recent Posts
Recent Comments
«   2025/01   »
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
Archives
Today
In Total
관리 메뉴

A Joyful AI Research Journey🌳😊

[25] 230203 Java Ch. 4 조건문과 반복문: 1. 조건문: if문, switch문 [K-디지털 트레이닝 25일] 본문

🌳Bootcamp Revision 2023✨/Spring Framework, Java

[25] 230203 Java Ch. 4 조건문과 반복문: 1. 조건문: if문, switch문 [K-디지털 트레이닝 25일]

yjyuwisely 2023. 2. 2. 13:02

230203 Thu 25th class

Ch. 4 조건문과 반복문
진도: p. 134 ~ (교재: 혼자 공부하는 자바, 저자: 신용권)

 

혼자 공부하는 자바

독학으로 자바를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학습해야 할지 조차 모르는 입문자의 막연한 마음을 살펴, 과외 선생님이

www.aladin.co.kr

 

오늘 배운 것 중 기억할 것을 정리했다. 


지난 수업 때 배운 것 중 다시 기억할 것

Scanner

참고: https://www.w3schools.com/java/java_user_input.asp

Java User Input

The Scanner class is used to get user input, and it is found in the java.util package.

To use the Scanner class, create an object of the class and use any of the available methods found in the Scanner class documentation. In our example, we will use the nextLine() method, which is used to read Strings:

예제)

import java.util.Scanner; // import the Scanner class 

class Main {
  public static void main(String[] args) {
    Scanner myObj = new Scanner(System.in);
    String userName;
    
    // Enter username and press Enter
    System.out.println("Enter username"); 
    userName = myObj.nextLine();   
       
    System.out.println("Username is: " + userName);        
  }
}

결과) 

Enter username
Hi
Username is: Hi

Input Types

In the example above, we used the nextLine() method, which is used to read Strings. To read other types, look at the table below:

Method Description
nextBoolean() Reads a boolean value from the user
nextByte() Reads a byte value from the user
nextDouble() Reads a double value from the user
nextFloat() Reads a float value from the user
nextInt() Reads a int value from the user
nextLine() Reads a String value from the user
nextLong() Reads a long value from the user
nextShort() Reads a short value from the user

예제)

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner myObj = new Scanner(System.in);

    System.out.println("Enter name, age and salary:");

    // String input
    String name = myObj.nextLine();

    // Numerical input
    int age = myObj.nextInt();
    double salary = myObj.nextDouble();

    // Output input by user
    System.out.println("Name: " + name); 
    System.out.println("Age: " + age); 
    System.out.println("Salary: " + salary); 
  }
}

결과)

Enter name, age and salary:
Hi
10
120000
Name: Hi
Age: 10
Salary: 120000

Ch. 4 조건문과 반복문

책의 목차
04-1 조건문: if문, switch문
04-2 반복문: for문, while문, do-while문

4.1 조건문: if문, switch문

1) if문 p. 135

 if (조건식){...}else{...}
조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나, boolean 타입 변수가 올 수 있다.
조건식이 true이면 블록을 실행하고, false이면 블록을 실행하지 않는다.
괄호 {} 블록은 생략하지 않고 작성하는 것을 추천한다. 

예제) 

public class P136IfExample {
	public static void main(String[] args) {
		int score = 93;
		if(score>=90) {
			System.out.println("점수가 90보다 큽니다.");
			System.out.println("등급은 A입니다.");
		}
		if(score<90) 
			System.out.println("점수가 90보다 작습니다."); //중괄호 블록이 없어 여기까지 영향을 미친다. 
			System.out.println("등급은 B입니다."); //들여쓰기만 되었을 뿐 if문과 관련이 없으므로 출력된다. 	
	}
}

결과)

점수가 90보다 큽니다.
등급은 A입니다.
등급은 B입니다.

2) if-else문 p. 136

if (조건식){...}else{...}
조건식이 true가 되면 if 중괄호 내부를 실행하고, false가 되면 else 중괄호 내부실행한다.

예제)

public class P137IfElseExample {
	public static void main(String[] args) {
		int score = 93;
		if(score>=90) {
			System.out.println("점수가 90보다 큽니다.");
			System.out.println("등급은 A입니다.");
		}else {
			System.out.println("점수가 90보다 작습니다."); 
			System.out.println("등급은 B입니다."); 	
	}
	}
}

결과)

점수가 90보다 큽니다.
등급은 A입니다.

3) if-else if-else p. 138

 if (조건식1) {...} else if(조건식2) {...} else {...}
조건식 1이 true가 되면 if 중괄호 내부를 실행하고, 조건식2가 true가 되면 else if 중괄호 내부를 실행한다.
조건식1과 조건식2과 모두 false가 되면  else 중괄호 내부가 실행된다.

if (조건식1) {
	//조건식1이 true
    실행문 A
} else if (조건식2) {
	//조건식2가 true
    실행문 B
} else {
	실행문 C
}
	실행문 D

1. 조건식1이 true이면 A→D
2. 조건식1이 false이면 
     2.1 조건식2가 true이면 B→D
     2.2 조건식2가 false이면 C→D

예제)

public class P139IfElseIfExample {
	public static void main(String[] args) {
		int score = 75;
		if(score >= 90) {
			System.out.println("점수가 100~90입니다.");
			System.out.println("등급은 A입니다.");
		}else if(score >= 80) {
			System.out.println("점수가 80~90입니다.");
			System.out.println("등급은 B입니다.");
		}else if(score >= 70) {
			System.out.println("점수가 70~80입니다.");
			System.out.println("등급은 C입니다.");
		}else {
		System.out.println("점수가 60~70입니다.");
		System.out.println("등급은 D입니다.");
	}
}
}

결과) 

점수가 70~80입니다.
등급은 C입니다.

랜덤 Math.random() 

ex) 회원 가입 때 숫자 인증

start부터 시작하는 n개의 정수 중에서 임의의 정수 하나를 얻기 위한 연산식

int num = (int) (Math.random() * n) + start;

예제 1) 로또 번호 (1~45) 하나를 뽑기 위해서 사용하는 연산식

int num = (int) (Math.random() * 45) + 1;

예제 1.1) 랜덤 번호 6개 만든다.

import java.util.Random;
public class P140Lottery {
	public static void main(String[] args) {    
        Random random = new Random();		//랜덤 함수 선언
		int createNum = 0;  			//1자리 난수
		String ranNum = ""; 			//1자리 난수 형변환 변수
        int letter    = 6;			//난수 자릿수:6
		String resultNum = "";  		//결과 난수
		
		for (int i=0; i<letter; i++) { 		
			createNum = random.nextInt(46);		//1부터 45까지 올 수 있는 1자리 난수 생성
			ranNum =  Integer.toString(createNum);  //1자리 난수를 String으로 형변환
			resultNum += "["+ranNum+"]";			//생성된 난수(문자열)을 원하는 수(letter)만큼 더하며 나열
		}	  	
            System.out.println("랜덤 번호 6개: "+resultNum);
	}
}

결과)

랜덤 번호 6개: [33][25][31][22][35][2]

예제 2)

public class P140IfDiceExample {
	public static void main(String[] args) {
	// 주사위를 굴려서 나올 수 있는 1~6 중에서 하나의 수를 무작위로 뽑아서 출력 
	int num = (int)(Math.random() * 6) + 1; //6개의 정수, start=1
	//주사위의 숫자(num)가 1이면
	if(num==1) {
		//1번이 나왔습니다. 라고 출력
		System.out.println("1번이 나왔습니다.");
	} else if(num==2) {
		System.out.println("2번이 나왔습니다.");
	} else if(num==2) {
		System.out.println("3번이 나왔습니다.");
	} else if(num==2) {
		System.out.println("4번이 나왔습니다.");
	} else if(num==2) {
		System.out.println("5번이 나왔습니다.");
	} else {
		System.out.println("6번이 나왔습니다.");
	}
}
}

결과) 

6번이 나왔습니다.

4) switch문 p. 141

 switch(변수){case 값1: ... case 값2: ... default: ... }

변수의 값이 값1이면 첫 번째 case 코드를 실행하고, 값2이면 두 번째 case 코드를 실행한다. 값1과 값2가 모두 아니면 default 코드를 실행한다. default는 생략 가능하다.

switch( 변수 ) { 
    case 값1: //변수가 값1일 경우
    실행문A
    break;
    
    case 값2: //변수가 값2일 경우
    실행문B
    break;
    
    default: //변수가 값1,값2 모두 아닐 경우 (생략 가능)
    실행문C
}

예제 1)

public class P143SwitchExample {
	public static void main(String[] args) {
	// 주사위를 굴려서 나올 수 있는 1~6 중에서 하나의 수를 무작위로 뽑아서 출력 
	int num = (int)(Math.random() * 6) + 1; //6개의 정수, start=1
	switch(num) {
	case 1: //주사위의 숫자(num)가 1이면
		//1번이 나왔습니다. 라고 출력
		System.out.println("1번이 나왔습니다.");
		break;
	case 2:
		System.out.println("2번이 나왔습니다.");
		break;
	case 3:
		System.out.println("3번이 나왔습니다.");
		break;
	case 4:
		System.out.println("4번이 나왔습니다.");
		break;
	case 5:
		System.out.println("5번이 나왔습니다.");
		break;
	default:
		System.out.println("6번이 나왔습니다.");
		break;
	}
}
}

결과) 

3번이 나왔습니다.

case 끝에 break가 붙어 있는 이유는 다음 case를 실행하지 않고 switch 문을 빠져나가기 위해서이다. 
break가 없다면 다음 case가 연달아 실행된다. 


마무리
4가지 키워드로 끝내는 핵심 포인트 p. 145

1) if문 if (조건식){...}else{...}
조건식이 true가 되면 중괄호 내부를 실행한다.

2) if-else문: if (조건식){...}else{...}
조건식이 true가 되면 if 중괄호 내부를 실행하고, false가 되면 else 중괄호 내부를 실행한다.

3) if-else if-else: if (조건식1) {...} else if(조건식2) {...} else {...}
조건식1이 true가 되면 if 중괄호 내부를 실행하고, 조건식2가 true가 되면 else if 중괄호 내부를 실행한다.
조건식1과 조건식2가 모두 false가 되면 else 중괄호 내부가 실행된다.

4) switch문: switch(변수){case 값1: ... case 값2: ... default: ... }
변수의 값이 값1이면 첫 번째 case 코드를 실행하고, 값2이면 두 번째 case 코드를 실행한다.
값1과 값2가 모두 아니면 default 코드를 실행한다.

//switch문
switch( 변수 ){
//변수가 값1일 경우
case 값1:
실행문A

break;
//변수가 값2일 경우
case 값2:
실행문B

break;
//변수가 값1, 값2 모두 아닐 경우
default;
실행문C
}

728x90
반응형
Comments