[RESOLVIDO] Método chatAt()

Faça um programa que receba a palavra “Java” e mostre a seguinte saída:
J
Ja
Jav
Java
Jav
Ja
J
Obs: Dever ser realizada a implementação com o método charAt()

Eu fiz assim:


public static void main(String[] args) {

    String palavra = "Java";
    for (int i = 0; i < palavra.length(); i++) {
        System.out.println(palavra.charAt(i));
    }
}

E qual seria a sua dúvida? Imprimir ao contrário?

O meu resultado é só:


J
a
v
a

Precisava que fosse:


J
Ja
Jav
Java
Jav
Ja
J

sugestão: usa o metodo print para imprimir uma letra

e usa o metodo println para imprimir uma linha nova.

agora vc precisa fazer um “vai e vem”. vc pode usar dois loops ( um indo e um voltando ) ou um laço for apenas e um pouco de imaginação (matematica)

    String palavra = "Java Platform";

    StringBuilder impressao = new StringBuilder();
    for(int i = 0; i < palavra.length(); i++) {
        impressao.append(palavra.charAt(i));
        System.out.println(impressao.toString());
    }

    for(int i = palavra.length()-1; i >= 0; i--) {
        System.out.println(palavra.substring(0, i));
    }

Dê uma olhada neste código, é uma implementação bem simples e bem expressiva. Se tiver alguma dúvida pergunte aqui

Tem como fazer a volta usando o mesmo sistema do primeiro for?

for(int i = 0; i < palavra.length(); i++) {
    impressao.append(palavra.charAt(i));
    System.out.println(impressao.toString());
}

Tem sim:

    String palavra = "Java";
    StringBuilder impressao = new StringBuilder();
    StringBuilder impressaoReversa = new StringBuilder();
    int comprimento = palavra.length() - 1;

    for(int i = 0; i < palavra.length(); i++) {
        impressao.append(palavra.substring(0, i+1)).append("\n");
        impressaoReversa.append(palavra.substring(0, comprimento - i)).append("\n");
    }

    System.out.println(impressao.toString());
    System.out.println(impressaoReversa.toString());

Ele pediu pra usar o charAt().

public class ExercicioChartAt {
String word = “Java”;

public ExercicioChartAt() {
   call(1);
   call(2);
   call(3);
   call(4);
   call(3);
   call(2);
   call(1);
}
        
public static void main(String[] args) {        
    new ExercicioChartAt();
}

public void call(int ate) {
   for(int x=0; x < ate; x++) {
      System.out.print( word.charAt(x) );           
   }
   System.out.println(""); 
}

}

Forma Variavel

public class ExercicioCharAtVariavel {

public ExercicioCharAtVariavel() {             
   System.out.println("********************** variavel"); 
   call("JavaFX-AbraCadabra");
}
        
public static void main(String[] args) {        
    new ExercicioCharAtVariavel();
}

public void call(String word_variavel) {
   for(int x=0; x < word_variavel.length(); x++) {
      for(int z=0; z < x+1; z++) {
        System.out.print( word_variavel.charAt(z) );
      }  
      System.out.println(""); 
   }
   
   for(int x=word_variavel.length(); x >= 0; x--) {
      for(int z=0; z < x-1; z++) {
        System.out.print( word_variavel.charAt(z) );
      }  
      System.out.println(""); 
   }
   
   
}

}

Meu código ficou assim:


public static void main(String[] args) {

        String palavra = "Java";

        StringBuilder impressao = new StringBuilder();
        for (int y = 0; y < palavra.length(); y++) {
            impressao.append(palavra.charAt(y));
            System.out.println(impressao.toString());
        }

        for (int x = impressao.length(); x >= 0; x--) {
            for (int z = 0; z < x - 1; z++) {
                System.out.print(impressao.charAt(z));
            }
            System.out.println("");
        }
    }

Obrigado a ajuda ae

se vc usar a mesma logica do for “debaixo” vc nao precisa do String builder

Ah blz, assim também deu certo… Vlw


public static void main(String[] args) {

    String palavra = "Java";

    for (int x = 0; x <= palavra.length() + 1; x++) {
        for (int z = 0; z < x - 1; z++) {
            System.out.print(palavra.charAt(z));
        }
        System.out.println("");
    }

    for (int x = palavra.length(); x >= 0; x--) {
        for (int z = 0; z < x - 1; z++) {
            System.out.print(palavra.charAt(z));
        }
        System.out.println("");
    }
}

Há muitas formas de resolver este exercício.

Exemplo utilizando recursividade:

 public class Exemplo {
 
 	public static void main(String[] a) {
 		String palavra = "Java";
 		int caracteres = 1;
 		imprime(palavra, caracteres);
 	}
 
 	static boolean imprime(String palavra, int caracteres) {
 		if (caracteres > palavra.length()) {
 			return false;
 		}
 		StringBuilder texto = new StringBuilder();
 		for (int posicao = 0; posicao < caracteres; posicao++) {
 			texto.append(palavra.charAt(posicao));
 		}
 		String string = texto.toString();
 		System.out.println(string);
 		if (imprime(palavra, caracteres + 1)) {
 			System.out.println(string);
 		}
 		return true;
 	}
 }

Desculpe, fiz na correria e acabei me desviando do assunto da postagem.