Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] [Java] Dúvida sobre como juntar arrays de caracteres

oi! este é meu primeiro exercício seguindo nenhum tutorial aqui da Alura. Estou tentando fazer um método para reconfigurar uma String seguindo estes passos:

  1. Recebe uma palavra em string;
  2. transforma a string em array de caracteres;
  3. colocar as vogais em um array seguindo a ordem da palavra;
  4. colocar as consoantes em outro array, também seguindo a ordem da palavra;
  5. concatenar as vogais com as consoantes;
  6. mostrar a string completa;

exemplos: Palavra recebida: "Alura" Palavra devolvida: "Aualr"

Palavra recebida: "Obrigado" Palavra devolvida: "Oiaobrgd"

import java.util.Scanner;

public class Sort {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder palavraFinal = new StringBuilder();

        System.out.println("Digite uma palavra: ");
        String palavra = sc.nextLine();

        char[] palavraArray = palavra.toCharArray();
        int tamanhoPalavra = palavraArray.length;
        
        for (int i = 0; i < tamanhoPalavra; i++) {
            
            int vog;
            int con;
            char[] vogais = new char[vog];
            char[] consoantes = new char[con];

            if ( palavraArray[i] == 'a' ||
                    palavraArray[i] == 'e' ||
                    palavraArray[i] == 'i' ||
                    palavraArray[i] == 'o' ||
                    palavraArray[i] == 'u'){
                vogais.append(palavraArray[i]);
                vog++;
            }
            else {
                consoantes.append(palavraArray[i]);
                con++;
            }
        }

        palavraFinal.append(vogais).append(consoantes);
        System.out.println(palavraFinal);
    }
}
2 respostas
solução!

Fala Augusto, blz?

Algumas mudanças são necessárias para funcionar como você espera:

  • Inicia os arrays e variáveis fora do for, para que eles não sejam sobrescritos a cada iteração
  • Os arrays em Java tem um tamanho fixo pré-fixado quando são criados e não pode mudar, e como não se sabe qual será o tamanho desse array, usei o Arrays.copyOf(array, tamanho_novo) ali no final. Essa função vai criar um novo array a partir do array passado como primeiro argumento e com o tamanho novo passado como segundo argumento.
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    StringBuilder palavraFinal = new StringBuilder();

    System.out.println("Digite uma palavra: ");
    String palavra = sc.nextLine();

    char[] palavraArray = palavra.toCharArray();
    int tamanhoPalavra = palavraArray.length;

    char[] vogais = new char[tamanhoPalavra];
    char[] consoantes = new char[tamanhoPalavra];

    int vog = 0;
    int con = 0;

    for (int i = 0; i < tamanhoPalavra; i++) {
      if (palavraArray[i] == 'a' ||
          palavraArray[i] == 'e' ||
          palavraArray[i] == 'i' ||
          palavraArray[i] == 'o' ||
          palavraArray[i] == 'u') {
        vogais[vog++] = palavraArray[i];
      } else {
        consoantes[con++] = palavraArray[i];
      }
    }

    palavraFinal
        .append(Arrays.copyOf(vogais, vog))
        .append(Arrays.copyOf(consoantes, con));
    System.out.println(palavraFinal);
  }

Mágico!

to feliz q pelo menos a lógica por trás do que eu tava pensando tava no caminho certo. Obrigado pela resposta!