Bom dia gente!
Preciso de ajuda para “encriptar” uma String digitada pelo usuário.
O que é preciso?
*Retirar os espaços da String - Já fiz.
*Saber quantos caracteres sem espaços a String tem - Já fiz.
*Colocar essa String em bloco (linhas e colunas de tamanho iguais)
Exemplo:
String digitada - meu nome e tatiana
String sem espaços = meunomeetatiana
Total de caracteres = 15
1 2 3 4
1 m e u n
2 o m e e
3 t a t i
4 a n a
Saída: mota eman ueta nei.
O que eu já fiz no eclipse:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s;
System.out.println("Olá, eu sou seu algoritmo!");
System.out.println("Escreva uma frase por favor!");
s = sc.nextLine();
String result = s.replaceAll("\\s+","");
System.out.println(result);
System.out.print(result.length());
}
}
Alguém tem alguma ideia pra eu conseguir terminar esse algoritmo?
import java.io.PrintStream;
import java.util.Scanner;
public class ExercicioEncriptacao {
public static void main(String[] args) {
try {
ExercicioEncriptacao programa = new ExercicioEncriptacao();
programa.executar();
} catch (Throwable t) {
t.printStackTrace();
}
}
private static final Scanner in = new Scanner(System.in);
private static final PrintStream out = System.out;
public void executar() {
out.println("Olá, eu sou seu algoritmo!");
out.println("Escreva uma frase por favor!");
String frase = in.nextLine();
String fraseSemEspacos = frase.replaceAll("\\s+", "");
out.println("Frase digitada: \"" + frase + "\"");
out.println("Frase sem espaços: \"" + fraseSemEspacos + "\"");
out.println("Total caracteres: " + fraseSemEspacos.length());
char[][] matriz = criarMatriz(fraseSemEspacos);
imprimirMatriz(matriz);
String fraseEncriptada = textoEncriptado(matriz);
out.println("Saída: \"" + fraseEncriptada + "\"");
}
private char[][] criarMatriz(String texto) {
char[] letras = texto.toCharArray();
int tamanho = letras.length;
int raizQuadrada = (int) Math.ceil(Math.sqrt(tamanho));
int colunas = raizQuadrada;
int linhas = (int) Math.ceil(tamanho / (double) colunas);
char[][] matriz = new char[linhas][colunas];
int lin = 0;
int col = 0;
for (int i = 0; i < tamanho; i++) {
matriz[lin][col] = letras[i];
col++;
if (col % colunas == 0) {
col = 0;
lin++;
}
}
return matriz;
}
private void imprimirMatriz(char[][] matriz) {
for (int lin = 0; lin < matriz.length; lin++) {
for (int col = 0; col < matriz[lin].length; col++) {
out.print(" " + matriz[lin][col]);
}
out.println();
}
}
private String textoEncriptado(char[][] matriz) {
StringBuilder texto = new StringBuilder();
for (int col = 0; col < matriz[0].length; col++) {
for (int lin = 0; lin < matriz.length; lin++) {
char letra = matriz[lin][col];
if (letra > 0) {
texto.append(letra);
}
}
texto.append(" ");
}
return texto.toString().trim();
}
}
Saída do programa:
Olá, eu sou seu algoritmo!
Escreva uma frase por favor!
meu nome e tatiana
Frase digitada: "meu nome e tatiana"
Frase sem espaços: "meunomeetatiana"
Total caracteres: 15
m e u n
o m e e
t a t i
a n a
Saída: "mota eman ueta nei"