Imprimir uma frase "invertida"

13 respostas
wilsontads

qual o método mais adequado.. para receber uma mensagem qualquer..
e em seguida, imprimir ela inversamente..tipo:

Java 2 Ensino Didático

ocitádiD onisnE 2 avaJ

tentei, usando o substring, imaginei que colocando um enorme número como inicial
e um número menor, ele iria imprimir do maior pro menor, só que não aconteceu.
desde ja fico grato!

package Cap4Exercicios;

import javax.swing.JOptionPane;

public class Exer003Pag95 {

    public static void main(String[] args) {
        String aux;
        aux = JOptionPane.showInputDialog(null, "Entre com uma frase qualquer:");
        JOptionPane.showMessageDialog(null, "frase digitada: " + aux+ "\n"+
                "frase invertida: " + aux.substring(40,1));

    }
}

13 Respostas

educastanho

Dá uma olhadinha no método “reverse” da classe StringBuffer.

wilsontads

o link não abre…
é que, estou lendo um livro… e até o momento os únicos metodos que conheço,
que pode ser trabalhado para resolução desse desafio são:
*length
*charAt
*substring
*replace
apenas esses…

wilsontads

esse código, se for usado assim roda:

package Cap4Exercicios;

import javax.swing.JOptionPane;

public class Exer004Pag95_DUVIDA {

    public static void main(String[] args) {
        StringBuffer aux= new StringBuffer("Mensagem a ser invertida");
        System.out.println(null,"frase invertida: " +aux.reverse());

    }}

mas, eu gostaria de usar o comando JOptionPane.
para que o usuário entrasse com uma frase qualquer, mas da erro..
vejam como ficou:

package Cap4Exercicios;

import javax.swing.JOptionPane;

public class Exer004Pag95_DUVIDA {

    public static void main(String[] args) {
        StringBuffer aux= new StringBuffer();
        aux = JOptionPane.showInputDialog(null, "Entre com uma frase qualquer:");// Nessa linha da erro.
       JOptionPane.showMessageDialog(null,"frase invertida: " +aux.reverse());

    }}
F

como apaga post?

F

Faz assim

String frase = JOptionPane.showInputDialog(null, "Entre com uma frase qualquer:"); StringBuffer sb = new StringBuffer(frase); JOptionPane.showMessageDialog(null, "frase invertida: " + sb.reverse());

O

Já há respostas no fórum pra sua dúvida. Pesquise antes de postar. E prefira usar o StringBuilder: http://www.guj.com.br/posts/list/120022.java#649877

K

Como vc disse que ainda não aprendeu a usar o stringbuffer, vc poderia usar 2 strings, a 1ª que é a frase digitada pelo usuário, e a 2ª onde sairia a resposta, e ir usando o charAt dentro de uma estrutura de loop para inverter a frase.

exemplo:

import javax.swing.JOptionPane;

public class Teste{
	public static void main(String args[]){
		String aux = JOptionPane.showInputDialog("Insira a frase");
		String resp = "";
		for(int i=0; i<aux.length(); i++){
			resp = resp + aux.charAt(aux.length()-i-1);
		}
		JOptionPane.showMessageDialog(null, resp);
		
	}
}

na minha visão acho que essa é a resposta mais apropriada para os conhecimentos que você possui

EDIT - vc poderia usar a estrutura for iniciando i=aux.length-1; e ir diminuindo o valor de i até i=0; e dentro do charAt(), coloca só charAt(i), porém depende de como vc prefere

felipedamiani
KahhhXD:
Como vc disse que ainda não aprendeu a usar o stringbuffer, vc poderia usar 2 strings, a 1ª que é a frase digitada pelo usuário, e a 2ª onde sairia a resposta, e ir usando o charAt dentro de uma estrutura de loop para inverter a frase.

exemplo:

import javax.swing.JOptionPane;

public class Teste{
	public static void main(String args[]){
		String aux = JOptionPane.showInputDialog("Insira a frase");
		String resp = "";
		for(int i=0; i<aux.length(); i++){
			resp = resp + aux.charAt(aux.length()-i-1);
		}
		JOptionPane.showMessageDialog(null, resp);
		
	}
}

na minha visão acho que essa é a resposta mais apropriada para os conhecimentos que você possui

EDIT - vc poderia usar a estrutura for iniciando i=aux.length-1; e ir diminuindo o valor de i até i=0; e dentro do charAt(), coloca só charAt(i), porém depende de como vc prefere

Pra que programar o que já tem pronto?

public class InverteFrase {

	public static void main(String[] args) {
		StringBuffer b = new StringBuffer("Exemplo de uma frase");
		System.out.println(b.reverse().toString());
	}
	
}

:D

K
felipedamiani:
KahhhXD:
Como vc disse que ainda não aprendeu a usar o stringbuffer, vc poderia usar 2 strings, a 1ª que é a frase digitada pelo usuário, e a 2ª onde sairia a resposta, e ir usando o charAt dentro de uma estrutura de loop para inverter a frase.

exemplo:

import javax.swing.JOptionPane;

public class Teste{
	public static void main(String args[]){
		String aux = JOptionPane.showInputDialog("Insira a frase");
		String resp = "";
		for(int i=0; i<aux.length(); i++){
			resp = resp + aux.charAt(aux.length()-i-1);
		}
		JOptionPane.showMessageDialog(null, resp);
		
	}
}

na minha visão acho que essa é a resposta mais apropriada para os conhecimentos que você possui

EDIT - vc poderia usar a estrutura for iniciando i=aux.length-1; e ir diminuindo o valor de i até i=0; e dentro do charAt(), coloca só charAt(i), porém depende de como vc prefere

Pra que programar o que já tem pronto?

public class InverteFrase {

	public static void main(String[] args) {
		StringBuffer b = new StringBuffer("Exemplo de uma frase");
		System.out.println(b.reverse().toString());
	}
	
}

:D

eu coloquei essa opção para ele pq ele disse que não havia aprendido nd sobre stringbuffer ainda ;)

thiago.correa
KahhhXD:
Como vc disse que ainda não aprendeu a usar o stringbuffer, vc poderia usar 2 strings, a 1ª que é a frase digitada pelo usuário, e a 2ª onde sairia a resposta, e ir usando o charAt dentro de uma estrutura de loop para inverter a frase.

exemplo:

import javax.swing.JOptionPane;

public class Teste{
	public static void main(String args[]){
		String aux = JOptionPane.showInputDialog("Insira a frase");
		String resp = "";
		for(int i=0; i<aux.length(); i++){
			resp = resp + aux.charAt(aux.length()-i-1);
		}
		JOptionPane.showMessageDialog(null, resp);
		
	}
}

na minha visão acho que essa é a resposta mais apropriada para os conhecimentos que você possui

EDIT - vc poderia usar a estrutura for iniciando i=aux.length-1; e ir diminuindo o valor de i até i=0; e dentro do charAt(), coloca só charAt(i), porém depende de como vc prefere


Uma pequena melhoria no código

String aux = JOptionPane.showInputDialog("Insira a frase");   
        String resp = "";   
        for(int i= (aux.length() -1); i>=0; i--){   
            resp += aux.charAt(i);   
        }   
        JOptionPane.showMessageDialog(null, resp);

Se for para fins didáticos está aí o código, porém, se fores usar em um ambiente de produção, sugiro usar o método reverse das classes StringBuffer / StringBuilder como os colegas sugeriram!

Abraços

P

vcs poderiam me explicar cada metodo desse codigo

String aux = JOptionPane.showInputDialog(Insira a frase);

String resp = “”;

for(int i= (aux.length() -1); i>=0; i–){

resp += aux.charAt(i);

}

JOptionPane.showMessageDialog(null, resp);
mcirqueira
wilsontads:
esse código, se for usado assim roda:
package Cap4Exercicios;

import javax.swing.JOptionPane;

public class Exer004Pag95_DUVIDA {

    public static void main(String[] args) {
        StringBuffer aux= new StringBuffer("Mensagem a ser invertida");
        System.out.println(null,"frase invertida: " +aux.reverse());

    }}

mas, eu gostaria de usar o comando JOptionPane.
para que o usuário entrasse com uma frase qualquer, mas da erro..
vejam como ficou:

package Cap4Exercicios;

import javax.swing.JOptionPane;

public class Exer004Pag95_DUVIDA {

    public static void main(String[] args) {
        StringBuffer aux= new StringBuffer();
        aux = JOptionPane.showInputDialog(null, "Entre com uma frase qualquer:");// Nessa linha da erro.
       JOptionPane.showMessageDialog(null,"frase invertida: " +aux.reverse());

    }}
Bota um toString() para converter a StringBuffer em uma String e na linha 9 dá erro porque o JOptionPane retorna uma String:
package Cap4Exercicios;

import javax.swing.JOptionPane;

public class Exer004Pag95_DUVIDA {

    public static void main(String[] args) {
        String retorno = JOptionPane.showInputDialog(null, "Entre com uma frase qualquer:"); // Arrumei
        StringBuffer aux = new StringBuffer(retorno);
       JOptionPane.showMessageDialog(null,"frase invertida: " +aux.reverse().toString()); // Adicionei um toString()

    }}
Testa aí. :thumbup:
mcirqueira
String aux = JOptionPane.showInputDialog("Insira a frase"); // Armazena o qu o usuário digitou na variável aux    
String resp = "";     
for(int i= (aux.length() -1); i>=0; i--) { // Enquanto i for maior ou ingual a 0, decrementa-o
    resp += aux.charAt(i); // Não entendi...
}     
JOptionPane.showMessageDialog(null, resp); // Mostra a variavel resp ao usuário

Como o KahhhXD disse:

Criado 10 de março de 2009
Ultima resposta 26 de mai. de 2012
Respostas 13
Participantes 9