2 svar
149 visningar
solaris är nöjd med hjälpen
solaris 238 – Fd. Medlem
Postad: 19 jan 2019 09:04

for loop fortsätter trots kravet inte är sant

Så jag tänker mig att loopen skall fungera är då if(j== pattern.length()) blir sant dvs då j = 4 så skrivs i ut. Sen går den tillbaka till den yttersta for loopen, i =i+1 och sedan går den ner till den inre for loopen men eftersom j nu är 4 så kommer den inte köras(j är inte < pattern.length). Men tydligen så kommer den in i for loopen igen och j blir 0 och jag förstår inte hur.

AlvinB 4014
Postad: 19 jan 2019 10:02

Varje gång den yttre for-loopen körs kommer den inre loopen initieras på nytt (j sätts till noll i och med att före första semikolonet står j = 0) och köras till den hittar en bokstav som inte matchar eller pattern.length() är lika med j (vilket betyder att strängen matchar).

På detta sätt börjar ju loopen om även om du redan hittat en matchning av strängen. Är detta inte vad du vill? I så fall kan du ju bara lägga en rad med return efter att du printat i.

Laguna Online 28464
Postad: 19 jan 2019 10:09

Det står j=0 i den inre loopen. Det körs när man kommer till loopen, alltså varje gång du just har kommit runt i den yttre loopen.

Du kan ta bort j=0 och låta det bara stå semikolon, om du verkligen vill att j ska behålla sitt senaste värde, men det tror jag inte du vill här. Gör inte koden rätt?

Svara Avbryt
Close