ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 100제 Part.2 / 13 ~ 24
    개발자 수업/인터넷 강의 2021. 9. 15. 23:27

    1. 사용자 입력을 받아 2차원 배열을 생성하고 값을 입력하는 코드 구현, 중첩 반복문을 사용하여 출력

    import java.util.Scanner;
    
    public class Java100_array_TwoArrayUserInput{
    	public static void main(String[] args){
        
        // (1) 사용자 입력을 위한 객체 선언
        Scanner sc = new Scanner(System.in);
        
        // (2) 2차원 배열의 행과 열 선언 -> 사용자 입력으로 처리
        System.out.print("행의 개수를 입력하고 [Enter] 치세요 =");
        int R=sc.nextInt();
        System.out.print("열의 개수를 입력하고 [Enter] 치세요 =");
        int C=sc.nextInt();
        
        // (3) char 2차원 배열 선언 -> 사용자로부터 R, C 입력받아
        char[][] gameMap = new char[R][C];
        
        // (4) 사용자 입력을 받아서 저장할 String 배열 선언 -> *이 때 크기를 R로 함*
        // R만큼만 해주면 되는 이유? 어차피 사용자가 입력하는 값은 안쪽 for문을 돌면서 2차원 배열에 입력하기 때문에
        String[] strAr = new String[R];
        
        // (5) 2차원 배열 요소 -> 사용자가 입력하는 값으로 세팅
        for(int i=0; i<R; i++){
        	System.out.print((i+1)+"번째 행에 입력할 문자"+ C +"개를 차례대로 입력하고 [Enter] 치세요 =");
            strAr[i] = sc.next();
            for(int j=0; j<C; j++){
            	gameMap[i][j] = strAr[i].charAt(j);
            }
        }
        
        // (6) 2차원 배열에 들어있는 값 출력하기
        System.out.println(strAr[0]); //KOR
        
        for(int i=0; i<R; i++;){
        	for(int j=0; j<C; j++){
            	System.out.print(gameMap[i][j]);
            }
        }
        
        }
    }

     

     

    2. 메서드 구현 코드에서 틀린 곳을 찾아 올바르게 수정

    public class Java100_method_ExamStatic1{
    	public void helloWorld(){
        	System.out.println("Hello, World~ ^_^");
        }
        public static void main(String[] args){
        	helloWorld();
        }
    }
    public class Java100_method_ExamStatic1{
    
    	public static void helloWorld(){
        	System.out.println("Hello, World~ ^_^");
        }
        
        public static void main(String[] args){
        	// (1) 메서드 호출
            helloWorld();
        }
    }
    // static은 static이 있어야 불러올 수 있다

     

     

    3. 메서드의 정의와 기본적인 자바의 메서드를 작성

    (1) 메서드란 무엇인가?

     메서드는 다른 언어에서의 함수와 마찬가지로 어떤 특정한 동작이나 처리를 하도록 만들어진 코드 단위

     반복적인 작업을 처리해야 하는 경우 메서드로 만들어놓으면 이후에 필요할 때 다시 재사용할 수 있어 유용함

     메서드는 호출 시 어떤 결과를 반환하기도 하지만 결과를 반환하지 않는 메서드도 있다

     메서드는 호출 시 어떤 인자 값들을 넘겨서 호출하는 경우도 있지만 인자 값 없이 호출하는 경우도 있다

     

    (2) 메서드 종류

     반환 값 X 받는 인자 값 X

     반환 값 X 받는 인자 값 O

     반환 값 O 받는 인자 값 X

     반환 값 O 받는 인자 값 O

    public class Java100_method_Exam001{
    
    	public static void helloWorld(){
        	System.out.println("Hello World~");
        }
    
    	public static void showMenu(){
        	System.out.println("showMenu() 메서드가 호출되었습니다.");
        }
    
    	public static void main(String[] args){
        
        // 반환 값 X, 받는 인자 값 X
        showMenu();
        helloWorld();
        
        }
    }

     

     

    4. 반환 값이 없고 받는 인자 값이 있는 덧셈 메서드를 구현

    public class Java100_method_Exam002{
    
    	public static void plusMethod(int a, int b){
        	// 단순 출력
        	System.out.printf("인자로 넘겨받은 2개의 값은 %d와 %d입니다.%n",a,b);
        
        	// 연산 출력
            int rst = a+b;
            System.out.println("두 수를 더한 값 ="+rst);       
        }
    	public static void main(String[] args){
      	  // 반환 값 X, 받는 인자 값 O
      	  // 메서드가 받는 인자 값이 있다는 것은 호출부에서 파라미터 값을 넘긴다는 것
       	 int a=100, b=200;
       	 plusMethod(a,b);
        }
    }

     

     

    5. 반환 값이 있고 받는 인자 값이 없는 메서드를 구현

    public class Java100_method_Exam003{
    
    	public static int returnMethod(){
        	int ret = 100;
            ret += 100;
        	return ret; // 200
        }
    
    	public static void main(String[] args){
        // 반환 값 O, 받는 인자 값 X
        // 반환 값이 있다는 것은 메서드(함수)호출에 따른 리턴 값이 있는 것이므로 호출 시 리턴 값을 받는 변수를 정의한다
        int rst;
        rst = returnMethod();
        
        // 출력
        System.out.println("메서드 호출에 따른 리턴된 값은 ="+rst);
        }
    }

     

     

    6. 반환 값이 있고 받는 인자 값이 있는 대문자 출력 메서드를 구현, Korea 입력 시 대문자로 출력되도록

    public class Java100_method_Exam004{
    
    	public static String capitalMethod(String str);{
        	// 문자열 변수 선언
            String ret = str.toUpperCase;
        	return ret;
        }
    
    	public static void main(String[] args){
        	// 반환 값 O, 받는 인자 값 O
        	// 반환 값이 있다는 것은 메서드 호출에 따른 리턴되는 값이 있다는 것이므로 호출 시 리턴받는 값을 받는 변수를 정의한다
    	// 문자열 변수 선언
    	String rst; 
        	rst = capitalMethod("korea");
        
        // 출력
    	System.out.println("입력한 문자의 대문자는 =" + rst);
        }
    }

     

     

    7. static 선언이 안 되어있는 메서드를 사용하는 방법에 대해 코드로 구현

    public class Java100_method_ExamStatic2{
    
    	public void helloWorld(){
        	System.out.println("Hello, World~");
        }
    
    	public static void main(String[] args){
        	// (1) 메서드 호출
            // helloWorld(); // 메인 메서드는 static 메서드만 호출할 수 있기 때문에 에러
            
            // (2) 객체 생성 후 메서드 호출
            Java100_method_ExamStatic2 jes = new Java100_method_ExamStatic2();
            jes.helloWorld();
        }
    }

     

     

    8.  메서드로 인자 전달 시 정수 100을 보냈을 때의 아래 코드의 결과는?

    public static void sum(int a){
    	a += 400;
    	System.out.println(a);
    }
    public static void main(String[] args){
    	int a = 100;
        	sum(a);
        	System.out.println(a);
    }

    ↓풀이

    public class Java100_mathod_MethodCall1{
    	// Call by value -> 값에 의한 호출 -> 값에 의해서 (메서드를) 호출
        // 메서드로 인자 값을 넘길 때 해당 값을 복사하여 넘기는 방식
        // 따라서 sum() 메서드 내부에서는 복사된 값으로 처리함
    	public static void sum(int a){
        	a += 400;
            System.out.println(a);	// 500
        }
        
    	public static void main(String[] args){
        // 변수 선언 및 메서드 호출
        int a = 100;
        sum (a);
        
        // 출력
        System.out.println(a);	// 100
        }
    }

     

     

    9. 메인 메서드에서 100을 보냈을 때 값이 수정되게끔 Call by reference 방식으로 코드 수정

    (a 값이 같은 결과가 나오도록)

    public static void sum(int a){
    	a += 400;
    	System.out.println(a);
    }
    public static void main(String[] args){
    	int a = 100;
        	sum(a);
        	System.out.println(a);
    }

    수정 후 (완전한 정답 X)

    public class Java100_method_MethodCall2{
    
    	public static void sum(Integer a){
    		System.out.println(a);
    	}
        
    	public static void main(String[] args){
        	// 변수 선언 및 메서드 호출
            // Wrapper 클래스의 Integer 클래스 타입으로 변수 a를 선언하고 new로 객체를 생성하여 해당 주소 값을 메서드로 보낸다
    	Integer a = new Integer(100);
            sum(a);
        	System.out.println(a);
    	}
    }

    ↓TestNumber에 100이 있는 상태에서 sum 메서드 실행 -> main 메서드로 돌아옴

    class TestNumber{
    	int num;
        TestNumber(int num){this.num = num;}
    }
    
    public class Java100_method_MethodCall3{
    
    	public static void sum(TestNumber a){
        	System.out.println("Sum() 메서드 안에서의 a값"+a);
            System.out.println(a.num); // 100
            a.num = a.num + 400;
            System.out.println(a.num); // 500
        }
    
    	public static void main(String[] args){
        
        // (1) 객체 변수 선언
        TestNumber a = new TestNumber(100);
        sum(a);
        
        System.out.println(a.num); // 500
        
        }
    }

     

     

    10. 2개의 정수형 값을 리턴하는 메서드 구현

    import java.util.Arrays;
    
    public class Java100_method_TwoReturn1{
    
    	public static int[] testMethod(){
        	int num1 = 100;
            int num2 = 200;
            return new int[]{num1,num2}; // 배열로 받으면 하나인 척 할 수 있음
        }
    
    	public static void main(String[] args){
        
        // 배열 변수 선언 -> 메서드로부터 반환받을 값이 배열이기 때문에
        int result[] = testMethod();
        
        // 출력
        System.out.println(result[0] + "-" + result[1]); // 각각 출력
        System.out.println(result[0] + result[1]); // 300
        System.out.println(result); // 주소 값 출력 
        System.out.println(Arrays.toString(int)); // [100 200]
        }
    }

     

     

    11. 반환 값이 2개 있는 메서드를 구현

    "korea","USA" 입력 시 소문자는 대문자로, 대문자는 소문자로 출력되도록 

    import java.util.Arrays;
    
    public class Java100_method_TwoReturn2{
    
    	public static String[] capitalMethodring(Srting a, St b);{
            String a_=a.toUpperCase();
            String b_=b.toLowerCase();
    	
        	// 리턴 값 2개를 저장할 배열 변수 선언
            String[] ret={a_,b_};
            return ret;
    	}
        
    	public static void main(String[] args){
        	// 반환 값 O, 받는 인자 값 O
            // 반환 값이 있다는 것은 메서드 호출에 따른 리턴 값이 있다는 것 -> 호출부에서 리턴 값을 받는 변수 정의
    		String[] result = capitalMethod("korea","USA");
            
            // 출력
            System.out.println(result);		// 주소 값 출력
    		System.out.println(result[0]);	// KOREA
            System.out.println(result[1]);	// usa
            System.out.println(result[0] + "-" + result[1]);
            System.out.println(Arrays.toString(result));
    	}
    }

     

     

     

    '개발자 수업 > 인터넷 강의' 카테고리의 다른 글

    자바 100제 Part.3 / 5 ~ 13  (0) 2021.09.17
    자바 100제 Part.3 / 1 ~ 4  (0) 2021.09.17
    자바 100제 Part.2 / 6 ~ 12  (0) 2021.09.15
    자바 100제 Part.2 / 1 ~ 5  (0) 2021.09.15
    자바 100제 Part.1 / 20 ~ 26  (0) 2021.09.14

    댓글