2017-10-02 6 views
0

그래서이 코드로 해결하려고하는 원래의 문제는 다양한 길이의 문자열을 취한 다음 해당 문자열에 1-3 "e "그리고 더 적은 또는 더 많은 반환 false가있는 경우. 주어진 Strings에서 "e 's"를 개별적으로 추출하여 별도의 String에 넣고 새로운 String이 올바른 부울 값을 생성해야하는 "e"의 수를 테스트하려고했습니다. 폴 실행을 분리하여 빈 문자열에 3 개의 "e"를 넣음으로써 코드가 적어도 1 e를 갖는 모든 것에 대해 false를 반환한다는 것을 알았습니다. 거기에 아무 문제가 없지만 빈 문자열을 2 "e 's"로 바꿨고 String이 50 개의 "e 's"를 합계로 포함하더라도 적어도 1 개의 e가있는 모든 것이 true를 반환한다는 것을 알았습니다. 즉, if 문을 만나면 루프가 한 번만 반복되므로 String pol에 1e가 추가됩니다. 가장 중요한 질문은 다음과 같습니다. if 문을 컨트롤에 따라 반복 실행하려면 어떻게해야합니까? 루프는 if 문을 두 번 이상 반복하지 않습니다.

또한이 코드 앞에 오는 것에 대해 걱정하지 마십시오 : 만이 설문 조사에서 전자를 넣어

String pol = ""; 
String some; 
for (int len = 0; len < str.length(); len = len + 1) { 
    some = str.substring(len, len + 1); 
    if (some.equals("e")) { 
     pol = "" + some; 
    } 
} 
if (pol.equals("e") || pol.equals("ee") || pol.equals("eee")) 
    return true; 
return false; 
+3

'pol + = some;'이되어야합니까? 또한 코드 서식을 작성하십시오. 원래 코드의 형식이 잘못 지정되어 다른 사람들이 읽고 이해하기가 매우 어려웠습니다. 나는 너를 위해 그것을 바로 잡았지만 우리는 너를 위해 이것을 해선 안된다. –

+0

죄송합니다. 방금이 사이트를 사용하기 시작했고 코드가 찢어졌습니다. 또한, 왜 작동합니까? – ZolloKaptain

+1

매번 pol을 "e"로 다시 설정하기 때문에. +를 사용하면 문자열 변수의 기존 값에 대신 값이 추가됩니다. – user2023608

답변

0

모든 poll = "" + some 않습니다 부울 것을 알고있다. 당신이 e가 발생할 때마다 당신은 대신에 추가의pol을 덮어 poll = poll + some

2

을보십시오. 대신

pol = "" + some; 

의 당신은 아마 의미 :

pol += some; 

에 관계없이, 문자열로 추가하는 것은이 작업을 달성하는 투박한 방법처럼 보인다. e이 발생할 때마다 정수 카운터를 증가시키는 것이 훨씬 쉽습니다. 또는 Java 8의 스트림을 사용하면 더 간단합니다.

long count = str.chars().filter(c -> c == 'e').count(); 
return count >= 1 && count <= 3; 
1

정확하게 이해하면 특정 문자열에 몇 개의 e가 있는지보고 싶습니다. Enhanced for loop이라는 매우 간단한 방법이 있습니다. 이런 종류의 루프를 사용하면 매우 적은 수의 라인에서 이것을 만들 수 있습니다 :

String s = "Hello There!"; 
    int numOfEs = 0; 
    boolean bool = false; 
    // loops through each character in the string s ('H', 'e', 'l', etc) 
    for (Character c : s.toCharArray() /* Make String s a list of characters to iterate through*/) { 
     if (c.equals('e') || c.equals('E')) // Make Uppercase and Lowercase Es both count 
      numOfEs++; 
    } 
    // Are there 3 or more E's? 
    // If there aren't, the boolean will be false because I defined it to equal false. 
    if (numOfEs >= 3) 
     bool = true; 
    System.out.println(bool + ": There are " + numOfEs + " e's.");