Conversão de numeros para caracteres, como?

2 respostas
Z

Pessoal, começei a programar agora e tenho dificuldade para terminar esse exercicio:

Elabore um programa que leia uma frase (uma String) e então reescreva-a de modo que quando houver uma vogal, escreva em seu lugar @. Mostre também a distribuição de frequências de cada uma das vogais com a quantidade de
ocorrências seguida de um histograma horizontal (imprimindo caracteres * na mesma quantidade das ocorrências).

o meu codigo fonte é esse:

import java.util.Scanner;

public class exercicio1 {
	Scanner teclado = new Scanner(System.in);

	public static void main(String[] args) {
		Scanner teclado = new Scanner(System.in);
		char [] asterisco = { '*' };
		final char[] vogais = { 'a', 'e', 'i', 'o', 'u' };
		final char[] arroba = { '@' };
		int conta = 0, tam,conte = 0,conti = 0,conto = 0,contu = 0;

		String frase;

		System.out.print("Digite sua frase: ");

		frase = teclado.nextLine();

		tam = frase.length();

		char[] vt; // vetor da frase.
		vt = new char[tam];
		System.out.print("\nA frase digitada no vetor é: ");
		for (int i = 0; i < tam; i++) {
			vt[i] = frase.charAt(i);
			System.out.print(vt[i] + " ");
			
			if(vt[i]==vogais[0]){
				conta = conta + 1;
				}
				if(i==tam - 1){
					vt[i] = frase.charAt(i);
					asterisco =  new char [conta];
										
			System.out.println("\nQuantidade de A: "+ asterisco);
				}				
				if(vt[i]==vogais[1]){
					conte = conte + 1;
					}
					if(i==tam - 1){
				System.out.println("\nQuantidade de E: "+ conte);
					}
					
					if(vt[i]==vogais[2]){
						conti = conti + 1;
						}
						if(i==tam - 1){
					System.out.println("\nQuantidade de I: "+ conti);
						}
						
						if(vt[i]==vogais[3]){
							conto = conto + 1;
							}
							if(i==tam - 1){
						System.out.println("\nQuantidade de O: "+ conto);
							}
							
							if(vt[i]==vogais[4]){
								contu = contu + 1;
								}
								if(i==tam - 1){
							System.out.println("\nQuantidade de U: "+ contu);
								}
								
		}
		System.out.println("\nA nova frase e: ");
		System.out.println();
		for (int i = 0; i < tam; i++) {//rodar a frase
			for (int j = 0; j < 5; j++) {//verificar as vogais

				if (vt[i] == vogais[j]) {
					vt[i] = arroba[0];
				}
			}
			System.out.print(vt[i] + " ");
			
		}

	}
}

Mas no lugar da contagem do numero, preciso que apareca asteriscos, como esta no enunciado pedindo.
Alguem tem alguma sugestão, de também quem sabe nao fazer por tantos ifs?

2 Respostas

J

só falta a parte de asteriscos aqui… =D

não testei, então pode conter algum erro.

import java.util.Scanner;

public class exercicio1 {
	Scanner teclado = new Scanner(System.in);

	public static void main(String[] args) {
		Scanner teclado = new Scanner(System.in);

		int conta = 0,conte = 0,conti = 0,conto = 0,contu = 0,contN = 0, tam;

		String frase;

		System.out.print("Digite sua frase: ");

		frase = teclado.nextLine();

		tam = frase.length();

		char[] vt; // vetor da frase.
		vt = new char[tam];
		System.out.print("\nA frase digitada no vetor é: ");
		for (int i = 0; i < tam; i++) {
			vt[i] = frase.charAt(i);
			System.out.print(vt[i] + " ");

			switch(vt[i]){
                            case 'a':
                                   conta++;
                                   break;
                            case 'e':
                                   conte++;
                                   break;
                            case 'i':
                                   conti++;
                                   break;
                            case 'o';
                                   conto++;
                                   break;
                            case 'u';
                                   contu++;
                                   break;
                            case '0':
                            case '1':
                            case '2':
                            case '3':
                            case '4':
                            case '5':
                            case '6':
                            case '7':
                            case '8':
                            case '9':
                                   contN++;
                                   break;
			}
								
		}
	        System.out.println("\nQuantidade de A: "+ conta);
		System.out.println("\nQuantidade de E: "+ conte);
		System.out.println("\nQuantidade de I: "+ conti);
	        System.out.println("\nQuantidade de O: "+ conto);
  	        System.out.println("\nQuantidade de U: "+ contu);
                System.out.println("\nQuantidade de Números: "+ contN);
		System.out.println("\nA nova frase e: ");
		System.out.println();
		for (int i = 0; i < tam; i++) {//rodar a frase
			switch(vt[i]){//verificar as vogais
                             case 'a':
                             case 'e':
                             case 'i':
                             case 'o':
                             case 'u':
				vt[i] = '@';
                                break;
			}
			System.out.print(vt[i] + " ");
			
		}

	}
}
Z

Obrigado pela ajuda,
Mas na verdade, preciso que a quantidade de numero seja trocado por uma quantidade de asteriscos.
Realmente com switch fica melhor apresentado o codigo.
Ficaria assim:
Quantidade de A: ***
ou seja, tem 3 ‘as’.

Criado 13 de junho de 2009
Ultima resposta 14 de jun. de 2009
Respostas 2
Participantes 2