//Google AdSense

 

method 호출 원리는 변함이 없다 | Return data type 과 method 호출은 관련이 없다!

1 - ① - ⑶ 하나의 패키지 내 하나의 클래스에서 리턴 있고 입력 없는 메서드 선언 및 호출 

 

<<실행순서 서술하기>>



① a 메서드 호출
② a 메서드 실행
  "01 a 메서드 실행" 문자열을 콘솔창에 실행
③ return 값 "1루타" 를 메서드 호출한 곳으로 리턴
④ String data type으로 result 변수 선언 "1루타" 문자열을 result 변수에 대입
⑤ result 변수에 담겨있는 "1루타" 문자열을 포함하여 콘솔창에 출력

리턴값은 하나인데 조건에 따라서 리턴값이 바뀔 수 있다.

현재는 리턴값 하나가 리턴된다.
여러개 리턴은 나중에 가능할 것!

1 - ① - ⑷ 하나의 패키지 내 하나의 클래스에서 리턴 있고 입력 있는 메서드 선언 및 호출 





<<실습>>

<기능정리>

 


package Dog.and.Cat;

public class Login {

	public static void main(String[] args) {
		
		int result = uInsert ("id002", "pw002");
		int result2 = logre (result, "윤깨물", "고슴도치");
		typsort(result2, 21);
		agegroup (result);
		
		
			
	}
	
	public static void agegroup (int log) {
		if (log == 11) {
			System.out.println("성장기");
		} else if (log == 12) {
			System.out.println("성견");
		} else if (log == 13) {
			System.out.println("중장년견");
		} else if (log == 14) {
			System.out.println("노령견");
		} else if (log == 21) {
			System.out.println("성장기");
		} else if (log == 22) {
			System.out.println("성묘");
		} else if (log == 23) {
			System.out.println("노령묘");
		} else if (log == 24) {
			System.out.println("초노령묘");
		} 
	}
	
	
	public static int typsort(int log, int aage) {

		
		if(log == 1) { 
			System.out.println("강아지 나이 : "+aage+" 살");

				if(aage <= 1) {
					log = 11;
				} else if(aage >= 2 & aage <= 4) {
					log = 12;
				} else if(aage >= 5 & aage <= 10) {
					log = 13;
				} else if (aage >= 11) {
					log = 14;
				}

		} else if(log == 2) {
			System.out.println("고양이 나이 : "+aage+" 살");
			
				if(aage <= 1) {
					log = 21;
				} else if(aage >= 2 & aage <= 4) {
					log = 22;
				} else if(aage >= 5 & aage <= 10) {
					log = 23;
				} else if (aage >= 11) {
					log = 24;
				}
		} else if (log == 3) {
			System.out.println("기타 동물 등록은 고객 센터에 문의 바랍니다.");

		}
		
		
		return log;
	}

		
	public static int logre (int log, String aname, String atype) {

			
		
			if(log == 1) { 
			System.out.println( "로그인 성공! 환영합니다.");
			System.out.println( atype+" "+aname+" 의 집사님");
				
				if(atype.equals("강아지")) {
					log = 1;
				} else if (atype.equals("고양이")) {
					log = 2;
				} else {
					log = 3;
				}
				
			} else if(log == 2) {
				System.out.println("PW를 확인하세요.");

			} else if(log == 3) {
				System.out.println("등록되지 않은 ID 입니다.");
			}
			
	
			return log;
	}
	
	public static int uInsert (String id, String pw) {
		System.out.println("ID : " +id);
		System.out.println("PW : " +pw);
		
		
		
		String dbid = "id002";
		String dbpw = "pw002";
		
		int log = 0;
		
		if(id.equals(dbid)) {
			if(pw.equals(dbpw)) {
				log = 1;
			}
			else {
				log = 2;
			}
		}else {
			log = 3;
		}
	
		return log;
	}

}

<실행 순서에 따른 해설>


① uInsert 메서드를 호출, 실행

ID : 입력된 id
PW : 입력된 pw 문자열을 콘솔창에 출력한다.

int log는 초기값이 0이다.

입력된id와 dbid가 같고 입력된 pw와 dbpw가 같을경우 log변수에 담긴 값 1
입력된 id와 dbid가 같고 입력된 pw와 dbpw가 다를경우 log변수에 담긴 값 2
입력된 id와 dbid가 다를경우 log 변수에 담긴 값 3  


입력된 id와 dbid가 같고 입력된 pw와 dbpw가 같으므로 log 변수에 담긴 값은 1



② return 값 log 변수에 담겨있는 값 1을 메서드를 호출한 곳으로 리턴



③ int data type 으로 result 변수를 선언하고 정수 1을 result 변수에 대입



④ logre 메서드를 호출, 실행

result 변수에 담겨있는 값은 정수 1 > log 변수에 입력.

log 변수에 담긴 값이 1이라면 " 로그인 성공! 환영합니다. 입력된 atype, aname의 집사님" 문자열을 출력하고
atype이 강아지 문자열일 경우 log 변수에 담긴 값 1
고양이 문자열일 경우 log 변수에 담긴 값 2
강아지 또는 고양이 문자열이 아닐 경우 log 변수에 담긴 값 3

log 변수에 담긴 값이 2라면 "PW를 확인하세요." 문자열 출력
log 변수에 담긴 값이 3이라면 "등록되지 않은 ID 입니다." 문자열 출력


log 변수에 입력된 값이 1이고 atype에 입력된 값이 고슴도치 문자열이기 때문에 log 변수에 담겨있는 값은 정수 3



⑤ return 값 log 변수에 담겨있는 값 3을  메서드를 호출한 곳으로 리턴
  int data type으로 result2를 선언하고 정수 3을 result2 변수에 대입한다.

⑥ typsort 메소드를 호출, 실행

result2 변수에 담겨있는 값은 정수 3 > log 변수에 입력.

log 변수에 담긴 값이 1이라면
강아지 나이 : aage 살 문자열 출력.
입력받은 aage의 나이가 1보다 작거나 같으면 log 변수에 담긴 값 11
2보다 크거나 같고 4보다 작거나 같으면 log 변수에 담긴 값 12
5보다 크거나  같고 10보다 작거나 같으면 log 변수에 담긴 값 13
그 외는 log 변수에 담긴 값 14


log 변수에 담긴 값이 2라면
고양이 나이 : aage 살 문자열 출력.
입력받은 aage의 나이가 1보다 작거나 같으면 log 변수에 담긴 값 21
2보다 크거나 같고 4보다 작거나 같으면 log 변수에 담긴 값 22
5보다 크거나  같고 10보다 작거나 같으면 log 변수에 담긴 값 23
그 외는 log 변수에 담긴 값 24


log 변수에 담긴 값이 3이라면 
기타 동물 등록은 고객 센터에 문의 바랍니다. 문자열 출력



log 변수에 담긴 값이 3이기 때문에 기타 동물 등록은 고객 센터에 문의 바랍니다. 문자열을 출력한다.


리턴할 log 변수에 담긴 값이 없으므로 0이 된다.



⑦ return 값 log 변수에 담긴 값 0을 메서드를 호출한 곳으로 리턴


⑧ agegroup 메서드를 호출, 실행

log 변수에 담긴 값이 11 이라면 성장기 문자열
     12 라면 성견 문자열
     13 이라면 중장년견 문자열
     14 라면 노령견 문자열
     21 이라면 성장기 문자열
     22 라면 성묘 문자열
     23 이라면 노령묘 문자열
     24 라면 초노령묘 문자열을 출력한다.

log 변수에 담긴 값이 0이므로 아무것도 출력되지 않는다.

<실행 결과> 


출력오류?!

package Dog.and.Cat;

public class Login {

	public static void main(String[] args) {
		
		int result = uInsert ("id002", "pw002");
		logre (result, "윤깨물", "고슴도치");
		typsort(result, 21);
		agegroup (result);
		
		
			
	}
	
	public static void agegroup (int log) {..
	
	public static int typsort(int log, int aage) {..
		
	public static int logre (int log, String aname, String atype) {..
	
	public static int uInsert (String id, String pw) {..
	
}

오류내용

문법상의 오류는 없었지만 의도와 다른 내용이 출력되었다.

고슴도치이기 때문에 이 내용이 출력되어야 한다.

 


 

오류 수정

메서드 호출부분에서 result 값을 계속 같은 result 값으로 받았기 때문에 발생한 오류였다!
새로운 변수 result2를 int data type 으로 지정해주고 result2 다음 메서드에서 새로운 result2의 값을 받았더니 원하는 내용이 출력되었다.

 

+ Recent posts