메소드 문제 2
이전 걸음에서 메소드에 대한 Call과 Back에 대해서 배웠고 다른 메소드로 이동하고 이동을 해도 메소드의 기본적인 구조인 stack구조를 기억을 해야 하고 적용을 해야 메소드를 좀 더 자유자재로 사용을 할 수가 있습니다. 이런 메소드에 대한 이해를 하려면 어떻게 해야 할 까요? 당연히 저는 문제를 좀 더 풀어보고 이해를 한다면 메소드의 stack 구조와 다른 여러 부분들이 동시에 실력이 향상이 될 수 있다고 생각을 합니다.
이전의 배운 내용들에 대한 실력을 향상을 위해서 위에서 언급을 한 것처럼 당연히 문제를 많이 풀어보는 것이 좋다고 생각을 하고 있습니다. 그럼 메소드 문제 1을 할 때도 말씀을 드렸지만 효율적이고 이런 부분을 생각해서 메소드 문제를 푸는 것보다는 당연히 효율적이지 않아도 메소드를 많이 써보고 활용할 수 있는 문제를 하도록 하겠씁니다.
그럼 이번에 해볼 메소드 문제는 바로 랜덤한 문자열 만들기 문제 입니다. 랜덤으로 값을 받고 그걸로 문자를 만들고 그 문자들을 합쳐서 하나의 문자열을 만들어서 출력을 하면 되는 프로그램 입니다. 내용만 보시면 간단한 문제입니다. 하지만 메소드에 대한 제약을 넣고 4가지 유형으로 만들게 문제를 만들었습니다. 꼭 유형을 지켜서 만드는 연습을 하신다면 분명히 실력이 향상이 되실 수 있습니다.
메소드 랜덤 문자열 만들기
총 10번을 반복해서 랜덤을 생성하는 변수를 사용하고 기본 대문자 A를 기준으로 잡아서 10개의 랜덤한 수를 대문자 A에 더해서 랜덤한 수를 만들고 그걸 문자로 형 변환을 통해 문자를 만들고 그걸 문자열로 더하는 작업을 통해서 하나의 문자열이 만들어지고 그 랜덤한 문자열을 출력을 하면 됩니다.
※ 아래 연산을 하는 메소드를 4개 만들어야 합니다. 하지만 4가지 형태를 모두 사용을 해서 프로그램을 만들어야 합니다.
※ 메소드 연습을 위해서 static이라는 명령어를 사용하여 메소드를 바로 메모리에 올려 사용을 할 수 있게 문제를 풀어줍니다.
※ 메소드를 4가지 형태를 모두 사용을 하기 때문에 제약 사항이 생기면 필요에 따라서 static 변수를 사용을 합니다.
위 문제를 Class를 생성하고 Main문에 소스를 구현해 주세요.
실행 관련 걸음 : 다섯 걸음, 여섯걸음
참고해주세요.
또한 문제에서 나오는 메소드 6개도 main메소드 위에 만들어야 합니다.
public class MethodTest2 {
//1. 주고 안받고 랜덤값 추출
static int randomMake() {
Random r = new Random();
return r.nextInt(26);
}
//2. 주고 받고 더하기 연산
static int add(int ran) {
return 65 + ran;
}
//3. 주고 받고 문자를 만드는 기능
static char makeChar(int result) {
return (char)result;
}
//4. 안주고 안받고 10번 실행
static void start() {
String result = "";
for(int i = 0;i<10;i++) {
int ran = randomMake();
int val = add(ran);
char ch = makeChar(val);
String temp = makeString(ch);
result +=temp;
}
printString(result);
}
//5. 주고 받고 10개 문자를 더하는 연산
static String makeString(char ch) {
String abc = "";
abc += ch; //자동형변환 문자열
return abc;
}
//6. 안주고 받고 10개 문자를 출력
static void printString(String result) {
System.out.println(result);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
start();
}
}
생각을 해보기
메소드에 stack구조에 대해서 생각을 하면서 이 문제를 풀어보신다면 좋습니다. 또한 현재 소스에서 좀 더 간단하게 만들 수 있는데 이 부분도 메소드나 치환에 대해서 생각을 하신다면 하실 수 있습니다. 마지막으로 메소드를 한다고 메소드만 생각을 하시기 보다는 변수부터 시작한 부분을 같이 해주셔야 합니다.
※ 다른 방법이 없는지 생각을 해보면 실력 향상에 도움이 될 수 있습니다.
함께 보면 좋은 글
§ Java 첫 걸음 변수와 자료형§ Java 두 걸음 연산자
§ Java 세 걸음 형 변환
§ Java 네 걸음 Eclipse 설치
§ Java 다섯 걸음 Eclipse 개발 준비
§ Java 여섯 걸음 출력
§ Java 일곱 걸음 출력
§ Java 여덟 걸음 문제 풀기 1
§ Java 아홉 걸음 한글 깨짐
§ Java 열 걸음 제어문
§ Java 열 한걸음 if문
§ Java 열 두걸음 switch문
§ Java 열 세걸음 while문
§ Java 열 네걸음 for문
§ Java 열 다섯걸음 중첩 및 주의 사항
§ Java 열 여섯걸음 문제 1
§ Java 열 일곱걸음 문제 2
§ Java 열 여덟걸음 break continue
§ Java 열 아홉걸음 random
§ Java 스물 걸음 별 찍기 1
§ Java 스물 한걸음 별 찍기 2
§ Java 스물 두걸음 가위 바위 보 게임
§ Java 스물 세걸음 배열
§ Java 스물 네걸음 배열 활용
§ Java 스물 다섯걸음 Rando 활용 문제
§ Java 스물 여섯걸음 숫자 야구 게임
§ Java 스물 일곱 걸음 배열 숫자 야구 게임
§ Java 스물 여덟 걸음 다차원 배열
§ Java 스물 아홉 걸음 다차원 배열 심화
§ Java 서른 걸음 다차원 배열 문제
§ Java 서른 한 걸음 가변 배열
§ Java 서른 두 걸음 메소드(함수)
§ Java 서른 세 걸음 메소드형태
§ Java 서른 네 걸음 메소드 기초활용
§ Java 서른 다섯 걸음 메소드 문제1
§ Java 서른 여섯 걸음 메소드 구조 및 활용