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

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.

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

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

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]

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 !!!

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

Abraços.