Tartalom törölve Tartalom hozzáadva
110. sor:
 
Szerintem, mielőtt egy forráskódot feltöltesz ide, célszerű lenne legalább lefordítani, mert a Vigenère-rejtjelnél lévő Java implementáció nagyon kezdő fordítási hibákatt is tartalmazott. Továbbá még szemantika hiba is volt benne, így a már egyszer lefordított forráskódot még futtatni sem árthat.
 
Persze, itt az általad berakott kód, felkommenteltem az érintett sorokat:
 
<source lang="java" enclose="pre">
public class Vigenere{
private String alphabeth="aábcdeéfghiíjklmnoóöőpqrstuúüűvwxyz" //Lusta vagyok Unicode-dal foglalkozni... // 2. sor
 
private static char encode(char open, char shift){
if( Caharcter.isLetter( open ){ //Vajon betű-e? // 5. sor
return alphabeth.charAt( ( alphabeth.indexOf( open ) + alphabeth.indexOf( shift ) ) % alphabeth.length() ); //Itt történik a moduláris összegzés
} else {
return open; //Ha nem betű, nincs mit csinálni vele.
}
}
public static String encodeString(String openText, String cipherKey){
public String cipherString = ""; // 14. sor
for(int i = 0; i < openText.length(); i++){
cipherString.concat( Character.toString( encode( openText.charAt( i ), cipherKey.charAt( i % cipherKey.length() ) ) ) ); //Kicsit kerülő módon lehet összefűzni a karaktereket // 17. sor
}
return cipherString;
}
}
</source>
 
* 2. sor: alphabet helyesen az ABC angol neve, de ez nem szemantikai hiba. A nagyobb gond, hogy a statikus encode metódus erre a változóra hivatkozik, ami problémás, ugyanis statikus függvény objektum adattagra (azaz nem statikus változóra) nem hivatkozhat, hiszen a statikus függvények használatához nincs szükség objektumpéldányra, tehát ezt helyesen kötelező statikussá tenni. A string definíciója után hiányzik az utasítást záró pontosvessző is.
* 5. sor: az if feltétele után hiányzik a záró zárójel.
* 14. sor: lokális változónak nem adhatunk láthatósági módosítószót, hiszen azok csak az őket deklaráló blokk scope-jában léteznek.
* 17. sor: a String osztály concat metódusa nem fűzi hozzá az eredeti szöveghez a módosítást, hiszen a Java-beli String minden esetben immutable, így amikor a String.concat() meghívódik, az egy új String objektummal tér vissza. Tehát a fenti kódodban a Vigenere.encodeString() metódus minden esetben a cipherString kezdeti értékével tér vissza, hiszen ez a referencia sosem módosult a fenti for-ciklusban.
[[Szerkesztő:Kiskutyamutya|Kiskutyamutya]] <sup>[[Szerkesztővita:Kiskutyamutya|vita]]</sup> 2017. december 13., 18:50 (CET)