Ir ao conteúdo

Posts recomendados

Postado

Saudações. 
Como eu faço para embaralhar as letras de seguinte saída de uma frase?

A saída em questão deve ficar da seguinte forma:

omd luo an

 

Desde já muito obrigado. 

 

Segue o código em questão:

 

import javax.swing.JOptionPane;

public class QuantasLetrasEx2 {
    public static void main(String[] args) {
        String frase = "ola mundo";
       
        
     
        int TextoSemEspaco = frase.replaceAll(" ", "").length();
        System.out.println("Quantidade de letras sem espaço: " + TextoSemEspaco);
        double root = Math.sqrt(TextoSemEspaco);
        
        int tamanho = (int) Math.ceil(root);
        String[][] matriz = new String[tamanho][tamanho];
        
        frase = frase.replaceAll(" ", "");
        StringBuilder sb = new StringBuilder();
        int row = matriz.length;
        int col = matriz.length;
        
        int cont = 0;
        for (int i = 0; i < row; i++) {            
            for (int j = 0; j < col; j++) {
                if (cont < frase.length()) {
                    matriz[i][j] = frase.substring(cont, ++cont);    
                }else {
                    matriz[i][j] ="";
                }                 
            }
        }
        
        
for (int i = 0; i < matriz.length; i++) {
    for (int j = 0; j < matriz[i].length; j++) {
    
        sb.append(matriz[i][j]);
        if (j != matriz[i].length - 1) 
            sb.append(' ');
    }
    if (i != matriz.length - 1) 
        sb.append('\n');
}


JOptionPane.showMessageDialog(null, sb.toString());
System.out.print(frase);
    
}

  • Amei 1
Postado

@LearningDev      se o que você Quer é misturar as letras ,  então melhor usar uma função que pegue os caracteres da frase de forma aleatória ,   pois se você colocar valores fixos sempre vai sair igual ,  e aleatório não ,  e então seu código modificado poderia ser assim :

package embaralhar.letras;                 // codigo completo facita testar
import javax.swing.JOptionPane;
import java.util.Random;
public class EMBARALHARLETRAS              
{
  public static void main(String[] args) 
  {
    Random aleatorio = new Random();       // Gerar Aleatorios
    int valor = aleatorio.nextInt();       // Gera NumeRos inteiros aLeaTorios
    String frase = "ola mundo";            // cria e inicializa uma string
    int TextoSemEspaco = frase.replaceAll(" ", "").length(); // pega a qtd de caract menos os espacos
    double root = Math.sqrt(TextoSemEspaco);
    int tamanho = (int) Math.ceil(root);   // arredondamento de valor quebrados
    String[][] matriz = new String[tamanho][tamanho];
    frase = frase.replaceAll(" ", "");     // substitui um caract por outro
    StringBuilder sb = new StringBuilder();
    int row = matriz.length;
    int col = matriz.length;
    int cont = 0;
    for (int i = 0; i < row; i++) 
    {
      for (int j = 0; j < col; j++) 
      {
        if (cont < frase.length()) 
        {
          matriz[i][j] = frase.substring(cont,cont+1);// pega uma letra da frase de cada vez
          cont++;                                     // a proxima letra
        }
        else
        {
          matriz[i][j] =" ";
        }                 
      }
    }
    for (int i = 0; i < matriz.length; i++) 
    {
      for (int j = 0; j < matriz[i].length; j++) 
      {
        int lin  = aleatorio.nextInt(row);// escolhe uma posicao da matriz
        int kol  = aleatorio.nextInt(col);
        String a = matriz[lin][kol];      // pega a letra dessa posicao da matriz
        int lin2 = aleatorio.nextInt(row);// escolhe uma linha da matriz
        int kol2 = aleatorio.nextInt(col);// escolhe uma coluna da matriz
        String b = matriz[lin2][kol2];    // pega o caract dessa posicao da matriz
        matriz[lin ][kol ] = b;           // inverte os caract na matriz
        matriz[lin2][kol2] = a;           // coloca um no lugar do outro
      }
    }
    for(int i=0; i<matriz.length; i++)
    {
      for(int j=0; j<matriz[i].length; j++)
      sb.append(matriz[i][j]);            // insere os caract no Jpanel
      sb.append('\n');
    }
    JOptionPane.showMessageDialog(null, sb.toString());// mostra o Jpanel
    System.out.print(frase);             // escreve a frase original
  }
}

e melhor usar aquele botão  "code "  que não é esse <>  menor_que e maior_que , do teclado , e sim o que está desenhado lá na barra de ferramentas da janela de postar  , 

279794779_barracode.jpg.3f6a3801fed5fc885e3c948d38020e94.jpg

 e poste o código todo para facilitar queM queira ajudar e poder testar seu código  ,

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!