Zwolnienie pamieci w programie szyfrującym

0

Witam. Otóż mam pewien problem. Program który napisałem jest prostym programem szyfrującym lecz jeżeli kodowanie i dekodowanie jest w jednym programie to dekodowanie wyświetla mi głupoty. Jeśli podziele kodowanie i dekodowanie na dwa programy działają bez zarzutu.
Myślę że problem leży w tym że pamięć nie jest czyszczona po wykonaniu kodowania i dekodowanie pobiera coś z pamięci zarezerwowanej wcześniej i wypisuje głupoty.
Oto kod programu.

String a = JOptionPane.showInputDialog("Wyrażenie do zakodowania.");
        String b = JOptionPane.showInputDialog("Na ile wierszy kodujemy?");
        String c = "";

        char[] d = a.toCharArray();
        

        for(int i=0;(2*i*(Integer.parseInt(b)-1))<a.length();i++){
            System.out.print(d[(2*i*(Integer.parseInt(b)-1))]);
            c = c+d[(2*i*(Integer.parseInt(b)-1))];
        }
        for(int o=1;o<Integer.parseInt(b);o++){
            for(int i=0;(2*i*(Integer.parseInt(b)-1))<a.length()+Integer.parseInt(b);i++){
                if((2*i*(Integer.parseInt(b)-1))<a.length()-1){
                    if(i==0){
                        System.out.print(d[(2*i*(Integer.parseInt(b) - 1)) + o]);
                        c=c+d[(2*i*(Integer.parseInt(b)-1))+o];
                    } 
                    else{
                        if(o<Integer.parseInt(b)-1&&((2*i*(Integer.parseInt(b)-1))+o)<a.length()){
                            System.out.print(d[(2*i*(Integer.parseInt(b)-1))-o]);
                            c=c+d[(2*i*(Integer.parseInt(b)-1))-o];
                            System.out.print(d[(2*i*(Integer.parseInt(b)-1))+o]);
                            c=c+d[(2*i*(Integer.parseInt(b)-1))+o];
                        } 
                        else if(((2*i*(Integer.parseInt(b)-1))+o)<a.length()){
                            System.out.print(d[(2*i*(Integer.parseInt(b)-1))+o]);
                            c=c+d[(2*i*(Integer.parseInt(b)-1))+o];
                        }
                    }
                } 
                else{
                    if((((2*i*(Integer.parseInt(b)-1))-o)<a.length())&&(o<Integer.parseInt(b)-1)){
                        System.out.print(d[(2*i*(Integer.parseInt(b)-1))-o]);
                        c=c+d[(2*i*(Integer.parseInt(b)-1))-o];
                    }
                }
            }
        }
       
        
        
        
        String x = JOptionPane.showInputDialog("Wyrazenie do rozkodowania.");
        String y = JOptionPane.showInputDialog("Na ile wierszy rozkodowujemy?");
        String z = "";
             
        char[] z1 = x.toCharArray();                                     
        char[] z2 = new char[x.length()];
        
        int v=0;
        for (int i=0;(2*i*(Integer.parseInt(y)-1))<x.length();i++){
            z2[(2*i*(Integer.parseInt(y)-1))]=z1[v];
            v++;
        }
        for(int o=1;o<Integer.parseInt(y);o++){
            for(int i=0;(2*i*(Integer.parseInt(y)-1))<x.length()+Integer.parseInt(y);i++){
                if((2*i*(Integer.parseInt(y)-1))<x.length()-1){
                    if(i==0){
                        z2[(2*i*(Integer.parseInt(y)-1))+o]=z1[v];
                        v++;
                    } 
                    else{
                        if(o<Integer.parseInt(y)-1&&((2*i*(Integer.parseInt(y)-1))+o)<x.length()){
                            z2[(2*i*(Integer.parseInt(y)-1))-o]=z1[v];
                            v++;
                            z2[(2*i*(Integer.parseInt(y)-1))-o]=z1[v];
                            v++;
                        }
                        else if(((2*i*(Integer.parseInt(y)-1))+o)<y.length()){
                            z2[(2*i*(Integer.parseInt(y)-1))+o]=z1[v];
                            v++;
                        }
                    }
                }
                    else if((((2*i*(Integer.parseInt(y)-1))-o)<x.length())&&(o<Integer.parseInt(y)-1)){
                        z2[(2*i*(Integer.parseInt(y)-1))-o]=z1[v];
                        v++;
                            
                }
                            
            }
        }
                            System.out.println("");    
                            System.out.println(z2);      
    }
    }
0

To nie jest cały kod programu. Nie przyszło Ci do głowy, żeby konwersję ze Stringa na int

Integer.parseInt(b)
Integer.parseInt(y)

robić tylko raz?

0

Nie pomyślałem o tym. To cały kod jaki mam.

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