2011-03-19 6 views
0

길이가> = 인 문자열의 수를 사용자가 지정한 최소 길이로 가져 오는 데 도움이 필요합니다. 예 : 문자열 입력 "this is a game"minlength = 2. 해당 문장에서 3 단어의 길이는> = minLength이므로 출력은 3이되어야합니다. 3 단어는> = minLength보다 작으므로String에 대한 도움이 필요하십니까? Java

출력에 문제가있다. 나는 문자열을 입력하여 개별 단어로 분리하고 출력을 계산하는 방법으로 보낸다. 위의 예제에서 원하는 것은 3이지만 i는 1,1,1을 얻는다.

public class WordCount { 

    /** 
    * @param args 
    */ 

    public static String input; 
    public static int minLength; 

    public static void Input() { 

     System.out.println("Enter String: "); 
     input = IO.readString(); 

     System.out.println("Enter minimum word length: "); 
     minLength = IO.readInt(); 

    } 

    public static void Calc() { 

     Input(); 

     String[] words = input.split(" "); 

     for (String word : words) { 

      LetterCount(word); 
     } 

    } 

    public static int LetterCount(String s) { 


     int countWords = 0; 


     if (s.length() >= minLength) { 

      countWords += 1; 

      IO.outputIntAnswer(countWords); 

     } 



     return countWords; 

    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     Calc(); 

    } 

} 

답변

0

그에만 제로 변수마다 countWords을 다시 설정하라는 카운트를 잡고, 당신은 모든 문자열을 통해 literated 한 후 calc에 출력 함수를 호출하는 정적 정수를 확인 1. 출력하고 있기 때문에 .

static int countWords = 0; 
public static void Calc() { 
    Input(); 

    String[] words = input.split(" "); 

    for (String word : words) { 
     LetterCount(word); 
    } 
    IO.outputIntAnswer(countWords); 
} 

public static int LetterCount(String s) { 
    if (s.length() >= minLength) { 
     countWords += 1; 
    } 
    return countWords; 
} 
+0

고마워요. – user647207

1

아주 가까이 있습니다!

각 단어에 대해 LetterCount를 호출하면 LetterCount의 시작 부분에서 countWords를 0으로 설정합니다. 따라서 카운터가 매번 재설정됩니다!

CountWords를 LetterCount의 로컬 변수가 아니라 클래스의 개인 변수로 사용하십시오.

파일의 맨 위에있는 장소

private static int countWords = 0; 

.

제거 LetterCount에서

int countWords = 0; 

.

+1

+1하지만 모든 OP의 메서드는 정적이므로 필드는 ** static **이어야합니다. 또한 OP는 'LetterCount' 메서드에서 카운트를 반환하므로 원래 OP는 호출자 사이트에서 반환 값을 소비하고 거기에서 비슷한 카운트 변수를 증가 시키려고합니다. 마지막으로,'IO.outputIntAnswer' 값을 출력하라는 호출이 옮겨 져야합니다. –

+0

네 말이 맞아. 나는 변화를 만들거야. – Starkey

+0

그는 잘못된 위치에서 출력 문을 호출하기도합니다. 당신의 변화만으로 그는 1,2,3을 얻었을 것입니다. – Kurru

0

LetterCount()를 입력 할 때마다 countWords = 0으로 설정하고 있습니다. LetterCount()에서 계산 논리를 제거하고 루프 주위에 Calc()에 넣어야합니다.

+0

while 루프를 사용해야하는 이유를 말해 주시겠습니까? 루프를 위해 완벽하게 맞습니다. – Kurru

+0

오, 예, 저는 실제로 루프를 가르칩니다. 혼란을 드려 죄송합니다. –

관련 문제