2016-03-24 29 views
0
@Test 
public void testBlankPosition() 
{ 
    assertEquals(10, sc1.blankPosition(3)); 
    assertEquals(24, sc2.blankPosition(4)); 
} 

所以這給了我11而不是預期的10。我不知道什麼用它去錯了。它應該返回blankNum要求的空白的索引。方法,可以跟蹤我在字符串,空白地方,並停止循環

public Object blankPosition(int blankNum) 
{ 
int blank = 0; 
int count = 0; 
int i = 0; 
while (i < sentence.length() && blankNum > blank) 
{ 
    if (sentence.charAt(i) != ' ') 
    { 
     count++; 
     i++; 
    } 
    else 
    { 
     if (sentence.charAt(i) == ' ') 
     { 
      count++; 
      i++; 
      blank++; 

     } 
    } 
} 
{ 
    return count; 
} 
} 

} 

回答

1

我覺得你應該加強你這樣的代碼:

 public Object blankPosition(int blankNum) { 
      int blank = 0; 
      int i = 0; 
      while (i < sentence.length()) { 
       if (sentence.charAt(i) == ' ') { 
        blank++; 
        if (blank == blankNum) 
         return i; 
       } 
       i++; 
      } 
      return i; 
     } 

這也許給了你希望

+0

這工作,但循環不停止正確的結果,我會放打破聲明來阻止? – Ethan

+0

我已經測試了代碼,並沒有問題。如果你返回我;在if語句中,這意味着你停止運行該方法並返回調用方法的值 –

+0

好吧好吧是的,我的道歉,非常感謝你我過去了,使我必須做的事變得複雜 – Ethan

相關問題