2017-01-30 2 views
-1

Also ich versuche, diesen Code zu verwenden, um eine Anweisung zu drucken, wenn es das Ende der Schleife erreicht, ohne Pause in der Anweisung davor aufgerufen wird, was bedeuten würde, dass das Programm eine Übereinstimmung und Dann muss es gedruckt werden. Allerdings wird mein if (k + 1 ...) Statement nie in immer übersprungen. Warum sollte das sein?Problem mit If Anweisung innerhalb For Schleife

else { 
      cout << "test" << endl; 
      looklen = look.length(); 
      for (j = 0;j < numdist;j++) { 
       for (k = 0;k < looklen;k++) { 
        //cout << "test2" << endl; 
        if (look[k] = '?') { 
         k++; 
         continue; 
        } 
        else if (look[k] != distinct[j][k]) { 
         break; 
        } 
        if (k + 1 == looklen) { 
         cout << "test3" << endl; 
         cout << look << " : matches " << distinct[j] << " " << distinctnum[j]+1 << " time(s)." << endl; 
        } 
       } 

      } 
     } 
+3

Ihre 'if (look [k] = '?')' ist eine Zuweisung, kein Vergleich Ison. Sie müssen '==' verwenden, um zu vergleichen. – 1201ProgramAlarm

Antwort

3
if (look[k] = '?') 

ist immer wahr (weil es eine Zuordnung ist), was bedeutet, das weiterhin wird immer ausgeführt. Sie meinten wahrscheinlich

if (look[k] == '?') 

der ein Vergleich

0

= Operator Wert zugewiesen ist

== Betreiber bedingt ist

so muss es so sein:

if (look[k] == '?') 
Verwandte Themen