Witam,
robię program na zaliczenie Javy,szyfruje tekst z pliku do pliku trzema metodami: szyfr Cezara, ga-de-ry-po-lu-ki oraz szyfr przestawieniowy macierz. Program piszę w NetBeans. Nie wiem jak podejść do ostatniej metody. Powinna mi zliczyć ciąg znaków i dopisać np * na końcu tak, aby jego długość była kwadratem możliwie najmniejszej liczby naturalnej, wtedy mogę 'zbudować' macierz kwadratową z tych znaków i odczytać ją kolumnami (bo na tym polega ta metoda), stworzyłem już coś takiego:
[code]
/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package szyfrowanie;
/**
*
-
@Author Karol
*/
public class Przestawienny {
public String koduj(String secret) {
char tablica[]= secret.toCharArray();
int N=(int) Math.pow(Math.floor(Math.sqrt(secret.length())),2);
char[][] A ;
for (int i = 0; i < N-1; i++){
int p=Ni;
for (int j = 0; j < N-1; j++){
if (secret.length<j+p+1){
A[i][j] = tablica[j+p];
}
else{
A[i][j] = "";
}
}
}
for(int k=0; k<Math.pow(N,2)-1; k++){
for (int i = 0; i < N-1; i++){
for (int j = 0; j < N-1; j++){
tablica[k] = A[j][i];
}
}
}
return new String(tablica);
}
}
[/code]
jeszcze nie wiem czy działa poprawnie, bo nie wiem jak zadeklarować macierz A, bo póki co do A-variable A might not have been initialized- zmienna A może nie została zainicjowana.
Czyli póki co pytanie brzmi jak zadeklarować macierz A, bo na pewno nie char[][] A