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

So gibt dies mir 11 statt der erwarteten 10. Ich bin nicht sicher, was mit ihm falsch läuft. Es soll den Index des Blanks zurückgeben, nach dem blankNum fragt.Methode, die verfolgen, wo ich bin in der Kette, Rohlinge halten können, und stoppen die Schleife

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; 
} 
} 

} 

Antwort

1

Ich glaube, Sie Ihren Code wie folgt verbessern sollte:

 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; 
     } 

Es ist vielleicht das richtige Ergebnis geben, wie Sie

+0

erwartet Das funktioniert aber die Schleife nicht zu stoppen, würde ich setzen Break-Anweisung, um das zu stoppen? – Ethan

+0

Ich habe den Code bereits getestet und es ist in Ordnung. Wenn Sie i zurückgeben; in der if-Anweisung bedeutet es, dass Sie aufhören, die Methode zu starten und den Wert für Aufrufer-Methode –

+0

Okay in Ordnung ja meine Entschuldigung, ich danke Ihnen viel, ich war über komplizieren, was ich tun musste – Ethan

Verwandte Themen