2017-05-18 1 views
1

숙제는 주어진 문자열에서 주어진 문자의 모양을 계산하는 재귀 적 메서드를 만드는 것입니다. 여기에 지금까지 내 코드입니다 :자바에서 재귀 적 메서드를 사용하여 문자열의 특정 문자 계산하기

import java.util.Scanner; 
public class Exercise18_10 { 
    public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in);  
    System.out.print("Enter a string: "); 
    String str = sc.next(); 
    System.out.print("Enter a character: "); 
    String letter = sc.next(); 
    char a = letter.charAt(0); 
    System.out.println("The count of " + a + " is: " + count(str, a)); 

    } 
    public static int count(String str, char a) { 
     int count = str.indexOf(a); 
     return count; 
    } 
} 

count에서, 내가 원하는 문자의 첫 번째 항목을 찾을 수 indexOf를 사용,하지만 그 이후에 무엇을 할 확실하지 않다.

+0

펜과 종이 만 가지고 있다면 어떻게 할 것인가? –

+1

'indexOf (...)'가 무엇을하는지 알고 있습니까? – Turing85

+1

예 지정한 문자의 첫 항목을 찾습니다. –

답변

1

count 변수는 위치에있는 문자열에서 첫 번째로 나타나는입니다. 대신, 내가 코드에 당신을 위해이 많이 떠 났어요

public static int count(String str, char a) { 
    int exist = str.indexOf(a); 
    if (<a doesn't exist in str*>) 
     return 0; 
    else { /* recur on the rest of the string; add 1 */ 
     rest = str.substr(exist+1, <end of string>) 
     return count(rest, a) + 1 
    } 
} 

같은 뭔가가 필요하지만, 사람들은 두 가지 기본 단계는 다음과 같습니다

  • 자료의 경우 : 문자가 아닌 거기서, 그래서 돌아온다 0
  • 재귀 :는 1 개를 조사하고, 나머지의 것은 무엇이든 추가한다.
+1

감사합니다. 지금이 말이 너무 좋습니다! –

0

앞에서 말씀 드린대로 '개수'함수는 입력 된 문자가 처음 나타나는 색인을 반환합니다. 발생 횟수를 재귀 적으로 계산한다는 아이디어는 앞으로 나아갈 때 줄을 더 작고 작은 부분으로 나눌 필요가 있음을 의미합니다.

먼저 전체 문자열을보고 다음 번에 시작하는 현재 문자열의 부분 문자열 만 봅니다. 여기서 재귀를 구현하려면 기본 조건을 사용하여 반복적으로 자신을 호출 할 수있는 메소드를 만들어야합니다 (예 : 시작과 같이). 일단 완료되면 이탈합니다 (즉, 문자열의 끝에 도달하거나 문자가 더 이상 나오지 않음). 당신이 남긴 끈의 어떤 부분에서라도 -> indexOf (...) == -1

+1

답변 해 주셔서 감사합니다. 매우 도움이됩니다. –

관련 문제