프로그래밍/자바공부 - 수업일차별

수업 9일차

leecoder 2021. 9. 1. 00:10

문자열 함수

  1. 문자열.charAt(index)
    • 기능 : 문자열의 index에 위치한 한 문자 추출하는 함수
    • 매개변수 : X
    • 반환값 : 선택한 위치의 문자 (char)
  2. 문자열.matches(regex)
    • 기능 : 정규표현식에 해당하는것이 있으면 boolean형식으로 반환하는 함수
    • 매개변수 : 정규표현식
    • 반환값 : (boolean)
  3. 문자열.split(regex) 1)기능 2)매개변수 3)리턴값
    • 기능 : 하나의 문자열을 regex(정규표현식)구분자를 기준으로 문자열을 분할하는 메서드
    • 매개변수 : regex(정규표현식)
    • 리턴값 : 구분자로 나눈 배열(Array)
  4. 문자열.format("변환하려는 형식", 변환하려는 값)
    • 기능 : 내가 원하는 문자열 형식으로 변화해서 문자열을 반환하는 함수.
    • 매개변수 : 변환하려는 형식, 변환하려는 값
    • 리턴값 : 변환된 값 (String)
  5. 문자열.join(regex,array)
    • 기능 : 배열의 값을 특정문자로 연결하여 문자열을 반환하는 함로
    • 매개변수 : 연결문자, 배열
    • 리턴값 : 변환된 값 (String)
  6. 문자열.length()
    • 기능 : 문자열의 길이를 반환하는 함수
    • 매개변수 : X
    • 리턴값 : 문자열 길이(int)

 

[함수를 호출]할 때 매개변수 사용 방법에 따라서

  1. Call By Name : 매개변수 없이 함수를 호출하는 방법
  2. Call By Value : 값(매개변수)를 가지고 함수를 호출
  3. Call By Reference : 매개변수를 참조형식으로 함수를 호출 -> 배열, 클래스, 인터페이스
  4. Call By point java에서는 사용X

 

재귀함수

  1. 정의 : 자기 자신을 호출하는 함수
  2. ex)
    private static int recursiveSum(int n) {
    	if ( n == 1 ) return 1;
    	else return n + recursiveSum(n-1);
    }​

클린코드

1.

public static int[] swap(int x, int y) {
     int [] change = new int[2];
     change[0] = y;
     change[1] = x;

     return change;
}
private static void swap(int[] m) { // return 값을 배열로 줄 필요가 없음
     int temp = m[0];
     m[0] = m[1];
     m[1] = temp;
}

2.

public static void main(String[] args) {
     Scanner scanner = new Scanner(System.in);
     int [] m = new int[20];
     int [] index = new int[20];

     for (int i = 0; i < m.length ; i++) {
         m[i] = (int) (Math.random()*50) + 1;
         index[i] = -1;
         System.out.printf("%d ",m[i]);
     }
     System.out.print("> 찾을 정수 입력");
     int num = scanner.nextInt();
     index = numIndex(m, num);
     for(int in: index) {
         if(in == -1) break; // 수정필요 첫번째에 있어도 출력 안하고 break걸림
         System.out.printf("%d\t",in);
     }
}
private static int[] numIndex(int[] m, int num) {
     int i = 0, idx = 0;
     int [] index = new int [20];
     while(i < m.length) {
         if(m[i] == num) {
             index[idx] = i;
             idx++;
         }
         i++;
     }
     return index;
}
public static void main(String[] args) {
     int [] m = new int[20];


     fillM(m);
     dispM(m);


     int n = getN();
     int idx = -1;
     int startIndex = 0;
     while((idx = sequenceSearch(m,startIndex,n)) != -1) {
         System.out.printf("> 찾은 위치 : %d. \n",idx);
         startIndex = idx + 1;
     }
}
private static int sequenceSearch(int[] m, int startIndex, int n) {
     for (int i =startIndex; i < m.length; i++) if( n == m[i]) return i;
     return -1;
}
private static int getN() {
     Scanner scanner = new Scanner(System.in);
     System.out.print("> 찾을 정수 입력? ");
     return scanner.nextInt();
}
private static void dispM(int[] m) {
     for (int i =0; i < m.length; i++) System.out.printf("[%d]",m[i]);
}
private static void fillM(int[] m) {
     for (int i =0; i < m.length; i++) m[i] = (int)(Math.random()*50+1);
}

3.

private static double pow(int a, int n) {
     double result = 1;
     if ( n > 0) for(int i = 1; i <= n; i++) result *= a;
     else if (n < 0) for(int i = 1; i <= -n; i++) result /= a;
     return result;
}
private static double pow(int a, int n) {
     double result = 1;
     for(int i = 1; i <= Math.abs(n); i++) result *= a;
     return n < 0 ? 1/result : result;
}

4.

private static double recusivePow(int a, int n) {
     if ( n == 0) return 1;
     else if (n >= 1) return a * recusivePow(a, n-1);
     else return (double)1/a * recusivePow(a, n+1);
}
private static double recusivePow(int a, int n) {
     if ( n< 0) return 1/ recusivePow(a, -n);
     else if ( n == 0) return 1;
     else return a*recusivePow(a, n-1);
}

 

'프로그래밍 > 자바공부 - 수업일차별' 카테고리의 다른 글

수업 11일차  (0) 2021.09.02
수업 10일  (0) 2021.09.01
수업 8일차  (0) 2021.08.31
수업 7일차  (0) 2021.08.30
수업 6일차  (0) 2021.08.30