1. 재귀함수
package basic_html;
import java.util.Scanner;
public class oop19 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("재호출 하시겠슴까?");
String result = sc.next();
if(result.equals("Y")) {
main(args); //재귀함수 호출시 매개변수 필요 (main의 경우 매개변수 String이 존재)
}else {
System.out.println("종료하였습니다.");
}
sc.close();
oop19_box ob = new oop19_box();
ob.recall();
}
}
class oop19_box {
Scanner sc = null;
public void recall() {
this.sc = new Scanner(System.in);
System.out.println("1. 숫자 선택, 2. 강제종료 : ");
int n = this.sc.nextInt();
if(n ==2) {
System.exit(0); //강제종료
}else {
System.out.println("숫자를 입력하세요 (0 입력시 처음으로 돌아갑니다) : ");
int z = this.sc.nextInt();
if(z==0) {
recall(); //자신의 메소드를 다시 호출 (재귀함수)
}else {
System.out.println(z);
}
}
}
}
- 본인을 호출
- 필요시 인자값 인수값 전달해야함
- System.exit(0); : 강제종료
2. 접근제한자
- class, method, 변수 모두 적용가능
- public : 다른 패키지, 다른 클래스 접근 가능
- protected : 같은 패키지 접근 가능
- private : 같은 클래스 접근 가능
- 다른 패키지의 메소드를 사용할때 메소드의 이름을 치고 컨트롤+스페이스바 하면 자동으로 임포트 됨!
package basic_html;
public class oop20 {
public static void main(String[] args) {
oop20_box ob = new oop20_box("admin");
}
}
class oop20_box{
//private로 설정하여 외부 클래스에서 접근제한을 적용한 변수 선언
private String userid = null;
public int level = 0;
public oop20_box(String id) { //해당 즉시 실행 메소드에서만 접근가능
this.userid = id;
int result = this.login_level();
System.out.println(this.userid + " : 레벨권한" + result);
}
private int login_level() { //외부 클래스에서 해당 메소드 접근 제한
if(this.userid.equals("admin")) {
this.level = 5;
}else if(this.userid.equals("hong")) {
this.level = 1;
}else {
this.level = 0;
}
return this.level;
}
}
- private로 변수값 핸들링
😊응용문제
외부 클래스를 이용하여 사용자가 하나의 숫자값을 입력
입력된 값이 짝수인지 홀수인지를 확인하는 return 메소드 코드 작성
package basic_html;
import java.util.Scanner;
public class oop21 {
public static void main(String[] args) {
oop21_box ob = new oop21_box();
Scanner sc = new Scanner(System.in);
System.out.println(ob.odev());
}
}
class oop21_box {
Scanner sc = null;
public String odev() {
String msg = "";
this.sc = new Scanner(System.in);
System.out.printf("숫자를 하나 입력하세요 : ");
int oenum = this.sc.nextInt();
if (oenum % 2 == 0) {
msg = "입력하신 결과는 짝수입니다.";
} else {
msg = "입력하신 결과는 홀수입니다.";
}
sc.close();
return msg;
}
}
up&down 게임
1~10까지 숫자 => 7 //private로 선언
단, 정답까지 최대기회 3번
package basic_html;
import java.util.Scanner;
public class oop21 {
public static void main(String[] args) {
oop21_box ob = new oop21_box();
Scanner sc = new Scanner(System.in);
System.out.println(ob.odev());
ob.updown();
}
}
class oop21_box {
Scanner sc = null;
private int udnum = 7;
public void updown() {
int cnt = 3;
int usernum = 0;
this.sc = new Scanner(System.in);
while (cnt > 0) {
System.out.printf("숫자를 입력하세요 (1~10) : ");
usernum = this.sc.nextInt();
if (usernum < 1 || usernum > 10) {
System.out.println("범위초과 게임을 종료합니다.");
break;
} else {
if (usernum == this.udnum) {
System.out.println("정답입니다!");
break;
} else if (usernum < this.udnum) {
System.out.println("up");
} else {
System.out.println("down");
}
}
cnt--;
if (cnt == 0) {
System.out.println("기회소진 게임을 종료합니다.");
}
}
sc.close();
}
}