반응형

재귀함수는 메소드 내에서 스스로를 반복적으로 호출하여 처리한다.
단, 무한으로 반복되는 형태가 아닌, 반복의 끝이 반드시 존재한다는 조건이 있어야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package chap08.Sample03;
 
public class sample6 {
    static int sum;
 
    public static int sum(int a) {
        sum += a;
        if (a == 0) {
            return sum;
        } else {
            a--;
            return sum(a);
        }
    }
 
    public static void main(String[] args) {
        // 메서드의 인자값 보다 적은 모든 정수의 합
        System.out.println(sum(10));
    }
}
cs

소스코드에서는 10을 인자로 넘겼으며 10을 sum이라는 멤버 변수에 값을 담고 인자값이 0이면 종료시키고 0이 아니면 값을 하나씩 감소시켜서 현재 실행중인 메소드를 0이 될때 까지 계속해서 호출함.

반응형
1~5 사이에 있는 임의의 수를 키보드로 부터 입력해서 몇 번만에 맞추는 지알아보는 프로그램을 작성하시오.
import java.util.Arrays;
import java.util.Scanner;

public class Sample1 {
	public static void main(String[] args) {
		// 1~5 사이에 있는 임의의 수를 키보드로 부터 입력해서 몇 번만에 맞추는 지알아보는 프로그램을 작성하시오.
		System.out.print("1~5 사이의 수를 입력하세요: ");
		int com = (int)(Math.random()*5+1);
		
		Scanner sc = new Scanner(System.in);
		int i = 1;
		
		while(sc.hasNext()) {
			
			int input = sc.nextInt();
			if(input == com) {
				System.out.println(i + "번째 만에 맞췄습니다.");
				break;
			}else {
				System.out.println("틀렸습니다. 다시 입력해주세요");
			}
			i++;			
		}
	}
}
1~5 사이의 수를 입력하세요: 1
틀렸습니다. 다시 입력해주세요
2
틀렸습니다. 다시 입력해주세요
3
틀렸습니다. 다시 입력해주세요
4
틀렸습니다. 다시 입력해주세요
5
5번째 만에 맞췄습니다.

'Study > JAVA' 카테고리의 다른 글

[Java] 접근제어자  (0) 2020.06.18
[JAVA] 재귀함수  (0) 2020.06.15
[JAVA] 조건문 문제풀기  (0) 2020.06.15
[Java] 조건문  (0) 2020.06.10
[Java] Arrays 클래스  (0) 2020.06.08
반응형
1. 로또 추첨 번호를 예상하는 프로그램을 작성하세요
-임의의 숫자를 1에서 45까지의 수를 총 6개 추첨하여 당첨번호를 구한다. 
-중복된 숫자는 있으면 안된다. 
import java.util.Arrays;
import java.util.Scanner;

public class Sample1 {
	public static void main(String[] args) {
			
		int[] target = new int[6];
		for(int i = 0; i<6; i++) {
			target[i] = (int)(Math.random()*45)+1;
			if(i > 0) {
				//중복된 번호가 있는지 확인
				for(int j = 0; j < i; j++) {
					if(target[i] == target[j]) {
						i--; //중복일 겨웅 배열 번호를 이전으로 되돌려서 다시 번호 선택하도록 처리
						
						break;
					}				
				}
			}
		}
		//추첨번화 출력
		System.out.print(Arrays.toString(target));
[42, 18, 24, 22, 43, 8]

 

'Study > JAVA' 카테고리의 다른 글

[JAVA] 재귀함수  (0) 2020.06.15
[Java] 조건문 문제풀기-2  (0) 2020.06.15
[Java] 조건문  (0) 2020.06.10
[Java] Arrays 클래스  (0) 2020.06.08
[Java] splite()메소드  (0) 2020.06.07
반응형


전체
 레코드에서 순차적으로 5개를 꺼내려하는데 기준이 필요하다.
오라클에선 테이블에서 조회를   결과집합을 만들면서 ROWNUM 추가해준다.

->이게 ROWNUM이다!

1-5 사이의 ROWNUM을 구한다면?

6-10 사이의 ROWNUM을 구한다면?

->아무 데이터도 뜨지 않는다. 

2부터 시작해도 역시 것도 뜨지 않는다. 
ROWNUM은 결과집합을 만들때 먼저 생성되므로 1이 아닌 값이 들어가면 조건에 맞지 않는다고 판단해서 빼버리기 때문이다. 
때문에 ROWNUM을 활용하려면 ROWNUMDL 원래 존재한 녀석인것 처럼 미리 만들어서 활용해야 한다. 

 

*는 모든것을 출력하는 것을 의미하기에 다른것과 함께 쓸 수 없다. 

하지만 NOTICE.* 라고 쓰면 NOTICE의 모든것 이라고 한정할 수 있기에 다른 녀석이 들어갈 수 있는 여지가 생긴다. 

 

->여기서 첫번째 *은 더이상 NOTICE를 가르키지 않는다. NOTICE를 활용한 새로운 결과집합인 것이다. 

->1-5 의 결과는 나오지만 6-10의 결과는 안나온다. 그 이유는 두번째 ROWNUM은 첫번째 SELECT이 실항될 때 만들어지는 ROWNUM이기 때문이다. 

-> 그래서 안쪽 SELECT절의 ROWNUM 구분하기 위한 별칭이 필요하다.
이렇게 하면 6-10사이의 ROWNUM을 구할 수 있다.

반응형

1.if~else
홀짝을 구분하는 소스코드

import java.util.Arrays;
import java.util.Scanner;

public class Sample1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("숫자를 입력하세요: ");
		while(sc.hasNext()) {
			int input = sc.nextInt();
			if(input %2 ==0) {
				System.out.println("짝수입니다.");
			}else {
				System.out.println("홀수입니다.");				
			}			
		}
	}
}
숫자를 입력하세요: 
3
홀수입니다.
4
짝수입니다.

2. if~else if
else if 문을 이용해서 홀짝 구분하고 break문으로 반복문 종료해보자

import java.util.Arrays;
import java.util.Scanner;

public class Sample1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("숫자를 입력하세요: ");
		while(sc.hasNext()) {
			int input = sc.nextInt();
			if(input ==0 ) {
				System.out.println("프로그램을 종료합니다.");
				break;
			}else if(input %2 ==0) {
				System.out.println("짝수입니다.");
				break;
			}else{
				System.out.println("홀수입니다.");
				break;
			}			
		}
	}
}

3. switch ~ case
switch ~case문은 변수의 값이나 연산식이 비교값과 정학하게 일치하면 break문을 만나기 전까지 계속해서 실행문을 처리함. 어떤 조건의 결과와 case문의 비교값이 일치하여 실행문이 실행되면 break문을 만나기 전까지는 끝까지 실행됨. 그래서 case문 끝에는 꼭 break문을 적어줘야한다. 
또한 값이 없다면 default문의 실행문이 실행됨.

import java.util.Arrays;
import java.util.Scanner;

public class Sample1 {
	public static void main(String[] args) {
		int in = 5;
		
		switch(in) {
		case 10 :  System.out.println(10);
		case 9 :  System.out.println(9);
		case 8 :  System.out.println(8);
		case 7 :  System.out.println(7);
		case 6 :  System.out.println(6);
		case 5 :  System.out.println(5);
		case 4 :  System.out.println(4);
		case 3 :  System.out.println(3);
		case 2 :  System.out.println(2);
		case 1 :  System.out.println(1);
				break;
		default : System.out.println("1에서 10까지의 수가 아닙니다.");
		}
	}
}
5
4
3
2
1

case문에 값을 2개 이상 넣는 방법을 살펴보자

import java.util.Arrays;
import java.util.Scanner;

public class Sample1 {
	public static void main(String[] args) {
		int in = 5;
		
		switch(in) {
		case 10 :  
		case 9 :  
		case 8 :  
		case 7 : 
		case 6 :  
		case 5 :  System.out.println("홀수입니다.");
				  break;
		case 4 : 
		case 3 : 
		case 2 : 
		case 1 :  
				System.out.println(1);
				break;
		default : System.out.println("1에서 10까지의 수가 아닙니다.");
		}
	}
}
1에서 10까지의 수가 아닙니다.

자바 14에서 multi-label case문이 추가되어 여러개의 비교값ㅇ르 넣을 수 있게 됐다.

import java.util.Arrays;
import java.util.Scanner;

public class Sample1 {
	public static void main(String[] args) {
		int in = 5;
		
		switch(in) {
		case 1,3,5,7,9:
				System.out.println("홀수입니다.");
				break;
		case 2,4,6,8,10:
				System.out.println("짝수입니다.");
		        break;		
		default : System.out.println("1에서 10까지의 수가 아닙니다.");
		}
	}
}
홀수입니다.

 

'Study > JAVA' 카테고리의 다른 글

[Java] 조건문 문제풀기-2  (0) 2020.06.15
[JAVA] 조건문 문제풀기  (0) 2020.06.15
[Java] Arrays 클래스  (0) 2020.06.08
[Java] splite()메소드  (0) 2020.06.07
[Java] 반복문 - 문제풀이  (0) 2020.06.07

+ Recent posts