DAY+4 선택과 반복(조건문, 반복문), 난수 생성

2020. 8. 16. 00:10Web_Back-end/JAVA_선행

  • 선택과 반복
    1. 조건문 : 조건에 따라 여러개의 실행경로 가운데 하나를 선택
      • if-else (조건 참/거짓)
      • switch (조건 여러개)
    2. 반복문 : 조건이 유지될 때 또는 정해진 횟수 만큼 처리를 되풀이함
      • while : 반복 횟수를 모를 때 ( ~할 떄까지 반복)
      • for : 반복 횟수를 알 때 ( 몇번 반복)

▶ 조건문 ◀

조건문 형식 유의할 점
if-else if(조건){
   조건이 참일 때 실행
}
else{
   조건이 거짓일 때 실행
}
만약 {}가 없을 경우 생략된것
이럴 경우 바로 아래 한 문장만 실행됨
switch switch(변수){
   case c1:
     처리문장        
      break;
   case c2
       처리문장
       break;
   case c3:
       처리문장
       break;
         ...
   default:
      처리문장
      break;
}
1. break 꼭 걸어줘야함

2. case끼리 공통된 출력값을 낼 때
    서로 묶을 수 있음

예) case 2:
case 3:
출력값(처리문장)
break;

3. case 에 문자열이 오려면
case "food":

▶ 예제 풀어보기

▷ if 문 예제) 80점이 넘는 점수 중에 90점이 넘으면 A, 아니면 B인 경우 출력

		//예제 1
        Scanner input=new Scanner(System.in);
        
        int score;
		System.out.println("당신의 점수를 입력하시오.");
		score=input.nextInt();
		if(score>=80&&score<=100) {
			if(score>=90) {
				System.out.println("A");
			}
			else {
				System.out.println("B");
			}
		}
		else if(score>100) {
			System.out.println("자신의 점수를 정확하게 입력하세요.");
		}
		else {
			System.out.println("FFF");
		}

풀이 및 설명

score : 사용자 값을 받을 변수

외부 if 문에 점수가 80점이 넘는 조건생성

외부 if 문 안에 내부 if 문을 중첩시켜 80점이 넘으면서, 90점이 넘는 조건생성

100점 이상의 점수를 입력하면 
"자신의 점수를 정확하게 입력하세요.." 출력

이외인 80점 미만인 점수 입력 시 FFF출력

▷ switch 문 예제2) 성적을 학점으로 변환 

	//예제 2 
Scanner input=new Scanner(System.in);
		
		int score;
		int num;
		System.out.println("당신의 점수를 입력하시오.");
		score=input.nextInt();
		num=score/10;
		String grade="";
		switch(num){
			case 9:
			case 10:
		//System.out.println("grade");
				grade = "A";
				break;
			case 8:
				grade = "B";
				break;
			case 7:
				grade = "C";
				break;
			default:
			

풀이 및 설명

num 은 사용자에게 받은 score값을 10으로 나눈 값
(= 사용자에게 받을 score 값을 10으로 나누어 10의 자리 수로만 학점을 나눔)

조건이 9와 10일때 출력되는 값이 같기 때문에 case를 합쳤음

사용자의 값에따라 결과값이 출력되면 프로그램이 끝나야 함으로 모든 처리문장 다음에는 break를 걸어주어야함


▶ 반복문

반복문 형식 유의할 점
while while(조건){
  반복되는 조건
}
while 문의 조건은 처음 진입할 때 검사되고 한번씩 반복할 때마다 검사함

조건이 계속 참일 경우 무한루프
do-while
\형식 예
do{
  System.our.println("값을 제대로 입력하시오."
}
while(틀린값이 들어올 수 있는 범위);
   
while의 조건에 맞지 않아도 do에서 적어도 한번은 실행하는 반복문

-> 사용자로부터 받은 값을 예외처리할 때 사용
for for(초기식; 조건식; 증감식){
   반복문장
}
초기식에서 변수를 선언해서 사용할 경우,
for문이 끝나면 변수 사라짐

증감식은 ++,--,+2 등 다양한 형태가능

초기식,조건식,증감식 모두 공백이면 무한루프
-> for( ; ; ){  }

▶ 예제 풀어보기 

▷ while 문 예제

난수와 사용자값을 비교하여 크거나 작다고 알려준 후 정답을 맞출때까지(=조건) 반복 + 몇번 시도했는지 출력

//예제 1
		Scanner input=new Scanner(System.in);
		Random rn=new Random();
		
		int i=rn.nextInt(10);
		int user=0;
		int count=0;
		while(i!=user) {
			user=input.nextInt();
			
			if(i<user) {
				System.out.println("값이 큽니다.");
				count++;	
			}
			else if(i>user) {
				System.out.println("값이 작습니다.");
				count++;	
			}
			else {
				System.out.println("정답입니다.");
				count++;	
				break;
				
			}
		}
		System.out.println(count+" 만큼 시도했습니다.");

풀이 및 설명

1. 선언단계 (i-난수 / user-사용자값 / count-시도한 횟수)

난수를 (객체-rn) 불러오고, 변수는 i로 선언함 i의 값이 user(사용자값 변수)값과 같을 경우를 while문 조건으로 넣는다.

2. 반복, 조건문 만들기

while 문 안에 if 문을 중첩해, i 와 user 의 크기를 비교하는 조건문을 만든다.

정답이 나왔을 경우, 프로그램이 끝이나야 함->break를 걸어준다.

3. 마무리

count를 모든 조건문에서 +1 (즉 count++) 하여, user 의 값이 입력을 시도한 횟수를 카운트한다.


난수 생성

▽ 난수 : random number

생성방법 : java.util 패키지의 Random 클래스 이용

(10)-괄호안의 수는 난수의 범위 0~9 사이의 숫자의미

▶ 예제 풀어보기 

난수 예제 1)

난수 2개를 받아서 합을 구하는 프로그램

	Random rn = new Random();
	int number = rn.nextInt(100); //범위는 0~99 지정
	int number2 = rn.nextInt(100);
	System.out.println(number + number2);

 난수 예제 2)

사용자에게 난수의 개수를 받아, 합을 구하는 방법 (for 문 활용)

Random rn = new Random();
Scanner input = new Scanner(System.in);
//사용자에게 받는 난수의 개수를 count로 선언(선언과 동시에 사용자값 입력)
int count = input.nextInt();
//출력할 난수의 합을 sum으로 선언
int sum = 0;

//i가 count만큼 반복 즉, 사용자에게 받은 횟수만큼 반복
//num은 각각의 난수. 난수를 취합하는 과정이 sum 최종적인 sum이 출력됨
for(int i=0; i<count; i++){
	int num = rn.nextInt(100);
	sum = sum + num;
}
System.out.println(count + "만큼 난수를 더한 값은: " + sum);

2020/08/17 - [개발/JAVA] - DAY+4(1) for문을 활용한 별찍기