Duvidas quanto ao uso do for e CharAt para impressão de determinada palavra [Resolvido]

5 respostas
Luiz_Am_ico

Olá Pessoal,

Estou com mais uma dúvida de exercício, de utilização do charAt e do for. Sou iniciante e estou estudando por conta própria através do Livro Java 2 Ensino Didático.
Preciso imprimir determinada palavra na linha de comando que faça o efeito abaixo:
frase digitada Ex: "JAVA".

J
JA
JAV
JAVA
JAV
JA
J

Porém não estou conseguindo prosseguir, gostaria que ajudassem a entender onde estou cometendo o erro. Segue o código:

import java.io.*;
class Exercicio0405
{
	public static void main (String args[])
	{
		String frase = "";
		BufferedReader dado;
		String g;	
		
		try
		{
			System.out.println("Digite a palavra desejada");
			dado = new BufferedReader(new InputStreamReader(System.in));
			frase = dado.readLine();
			
			for(int i = 0; i <= frase.length(); i++)
			{

				System.out.println(frase.charAt(i));
			}
		}
		catch (IOException erro)
		{
			System.out.println("Houve um erro na entrada de dados");
		}
	}
}

Agradeço toda e qualquer ajuda.

Abraços.

5 Respostas

xcah

Tente colocar ao invés de “i<=frase.length()” i<frase.length no loop, está dando que está passando do tamanho da String pelo que testei aqui, assim imprimirá:
J
A
V
A

henriqueluz

Acho que você tem que usar 2 laços “for”.

  1. Você percorre cada indice i da palavra e concatena em uma variavel auxiliar e imprime a variavel.
    Nesse laço a saida seria algo do tipo:
    J
    JA
    JAV
    JAVA

  2. Você faz o caminho inverso. Percorre usando dessa vez o método substring pegando do inicio até o indice que você ta decrementando.
    A saida dessa parte seria
    JAV
    JA
    J

Eu fiz aqui e deu certo com essa ideia. Se não puder usar substring, terei que pensar em outra solucao hehe.
Estou apressado por isso foi a primeira ideia que me veio.

Abraços

Luiz_Am_ico

Eu estou justamente com essa dificuldade de entender o uso dos laços, para exercícios assim. Porém estou aqui tentando. Vou mandar o exercício mesmo se houver algum erro. É nos tropeços que a gente toma força e levanta. Valeu as dicas.

Abraços.

Luiz[i]


“Embora ninguém possa voltar atrás e fazer um novo começo,
Qualquer Um pode Começar agora e fazer um Novo Fim.”[/i][b][i]

Chico Xavier.[/b][/i]

Rafael_Costa_Teixeir

Luiz ,

Fiz algumas modificações e aqui o resultado deu certo , segue a classe modificada:

import java.io.*;
class Exercicio0405
{
	public static void main (String args[])
	{
		String frase = "";
		StringBuffer palavra = new StringBuffer(200); // Criando um String modificavel com capacidade de ate 200 caracteres
		BufferedReader dado;
		String g;	
		
		try
		{
			System.out.println("Digite a palavra desejada");
			dado = new BufferedReader(new InputStreamReader(System.in));
			frase = dado.readLine();
			
			for(int i = 0; i < frase.length(); i++)
			{

				//System.out.println(frase.charAt(i));
				palavra.append(frase.charAt(i)); // Adiciona na String
				System.out.println(palavra); // Mostra na tela
				
			}
			
			for(int i = frase.length() -1;i > 0;i--)
			{
			
				palavra = palavra.deleteCharAt(i); // Remove da string regredindo da ultima para o começo.
				System.out.println(palavra); // Imprime na tela
			
			}
			
		}catch (IOException erro)
		{
			System.out.println("Houve um erro na entrada de dados");
		}
	}
}

Resultado:

Digite a palavra desejada
Java
J
Ja
Jav
Java
Jav
Ja
J

Qualquer duvida posta ai.

Bom Estudo !!!

Luiz_Am_ico

Rafael muito obrigado, pela dica! Isso com que eu pratique mais em busca desse aprendizado.

Abraços.

Criado 12 de agosto de 2011
Ultima resposta 15 de ago. de 2011
Respostas 5
Participantes 4