Gadery Poluki w Java - prośba o ocenę kodu

0

Piszę szyfr Gadery Poluki w Javie. wszystko szło prosto, do momentu, gdy przyszło przyszło sprawdzić, czy dany znak szyfrowanego tekstu występuje na pozycji klucza parzystej, czy nie parzystej. Myśl jest by sprawdzić to przy pomocy indexOf, ale nie wiem jak to napisać, jak uużyć...... nie rozumiem użycia indexOf.
Ew jak w inny prosty sposób, można to zapisać?

public class SzyfrGaderyPoluki {

    /**
     * @param args the command line arguments
     */
     static Scanner sc = new Scanner(System.in);
     private String[] alphabet = {"GADERYPOLUKI"};
     private String[] textToEncrypt = new String[20];
     String pozycja;
     public static String tekstZaszyfrowany = "";
     
     public void textFromUser(){
        System.out.println("Enter your text to encrypt");
        textToEncrypt[0] = sc.nextLine();
    }
     public String encode(){
         for(int i = 0; i < textToEncrypt.length; i++){
             for(int j = 0; j < alphabet.length; j++){
                 if(j % 2 == 0)pozycja = "parzysta";
                 else pozycja = "nieparzysta";
                 
                 if(textToEncrypt[i] == alphabet[i]){
                    pozycja =  textToEncrypt.indexOf();
                 }
             }
         }
     }
    public static void main(String[] args) {
        // TODO code application logic here 
        SzyfrGaderyPoluki gaderyPoluki = new SzyfrGaderyPoluki(); 
        gaderyPoluki.textFromUser();
    }
    
}

```
0

Zadaj pytanie tak żeby było wiadomo o co chodzi. Przecież sprawdzasz w pętli for czy indeks jest parzysty czy nie.

0

pętla for sprawdza, czy indeks - pozycja nieparzysta, lub parzysta
Zostało sprawdzenie, czy dany znak szyfrowanego tekstu jest na pozycji parzystej lub nieparzystej indexOf - chciałam uzyć do tego

0

Dlaczego nie zrobisz w takim razie z indeksem i bo chyba o ten chodzi, tak samo jak z j?

0

ten indexOf to chciałam użyć do sprawdzenia, czy dany znak szyfrowanego tekstu znajduje sie w alfabecie GaderyPoluki, no bo nie wiem jak inaczej,chyba nie wystraczy zapisać to textToEncryption[i] == alphabet[j] ? myslalam to wyszukac za pomoca indexOF - ale nie wiem jak zapisac indexOf

nie umiem kompletnie użyć tu indexOf - zapisać poprawnie

  pozycja = alphabet.indexOf(textToEncrypt[i])

chcę zapisac, czy textToEncrypt[i] - czyli litera wpisanego tekstu z biezacej iteracji, znajduje sie w alphabet[j] i wyszukac to za pomoca indexOf

0

Po pierwsze to masz dwa razy tablice Stringów z tylko 1 obiektem. Pewnie chcesz mieć tablicę char albo po prostu zwykły String. Za pomocą alphabet[i] nie odnosisz się do pierwszej litery tylko do pierwszego i jednocześnie jedynego Stringa.
Jak chcesz sprawdzić czy coś znajduje się w jakimś zbiorze to poszukaj sobie metody contains.

0

napisalam. nie zwraca tylko szyfru - proszę o wskazanie błędu, co poprawić
oraz o opinie nt tego kodu (w 100% sama pisałam) czy ma sens, czy jest pozbawiony logiki i gdzie. i w jaki sposób można poprawić, polepszyć,m by ładniej napisać- chcę go mocno dopracować

public class SzyfrGaderyPoluki {

/**
 * @param args the command line arguments
 */
 static Scanner sc = new Scanner(System.in);
 private String alphabet = "GADERYPOLUKI";
 private String textToEncrypt;
 String pozycja;
 public static char tekstZaszyfrowany;
 String cipherText = "";
 
 public void textFromUser(){
    System.out.println("Enter your text to encrypt");
    textToEncrypt = sc.nextLine();
}
 public String encode(){
     for(int i = 0; i < textToEncrypt.length(); i++){
         for(int j = 0; j < alphabet.length(); j++){
             if(j % 2 == 0)pozycja = "parzysta";
             else pozycja = "nieparzysta";
         char znak = textToEncrypt.charAt(i);
         String actualZnak = "";
         actualZnak = String.valueOf(znak);
         
         if(actualZnak.indexOf(alphabet) != -1){
             if(pozycja == "parzysta"){
                tekstZaszyfrowany = alphabet.charAt(j - 1);
             }
             else if(pozycja == "nieparzysta"){
                tekstZaszyfrowany = alphabet.charAt(j + 1);
             }
             else{
                tekstZaszyfrowany = alphabet.charAt(j); 
             }
             cipherText = String.valueOf(tekstZaszyfrowany);
         }
         
         }
     }
     return cipherText;
 }
public static void main(String[] args) {
    // TODO code application logic here 
    SzyfrGaderyPoluki gaderyPoluki = new SzyfrGaderyPoluki(); 
    gaderyPoluki.textFromUser();
    gaderyPoluki.encode();
}

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1