Escrever ao contrario

Bom Dia pessoal,

Como eu faço para escrever uma string ao contrario? Por exemplo:

20-06-2006 = 2006-06-20

eu ja tentei diversas formas, ja usei vários for, mas não deu certo.
Alguém poderia me ajudar?

Abraços

O contrário da string “20-06-2006” é “6002-60-02”.

Acho que você quer escrever uma data em formato ano-mês-dia, é isso?

Não é preciso usar “for”; basta usar substring no seu caso.

Hum… Hehehe
É verdade, eu queria escrever esta string no formato ano-mes-dia. E como eu faço para usar esta substring?

Abraços

Ta ai :slight_smile:


String s = "qualquercoisa";

for(int i = s.length()-1; i >= 0; i--) 
	System.out.print(s.charAt(i));

Usando um truquezinho (fazer um tipo de “gabarito” para saber as posições de substring, e lembrar que as posições começam por 0):

0123456789
20-06-2006

O código seria algo parecido com:

String data = "20-06-2006";
String ano = data.substring (6, 10); // posicao inicial, posicao final + 1
String mes = data.substring (3, 5);
String dia = data.substring (0, 2);
data = ano + "-" + mes + "-" + dia;

[quote=thingol]Usando um truquezinho (fazer um tipo de “gabarito” para saber as posições de substring, e lembrar que as posições começam por 0):

0123456789
20-06-2006

O código seria algo parecido com:

String data = "20-06-2006";
String ano = data.substring (6, 10); // posicao inicial, posicao final + 1
String mes = data.substring (3, 5);
String dia = data.substring (0, 2);
data = ano + "-" + mes + "-" + dia;

[/quote]

acho que seria mais elegante se fosse assim:

    public static void main(String[] args) throws ParseException {
        DateFormat df1 = new SimpleDateFormat("dd-MM-yyyy");
        DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
        Date data = df1.parse("20-06-2006");
        System.out.println(df2.format(data));
    }

É claro que é mais elegante (embora mais lento) usar 2 DateFormats.

Mas como dá a impressão que o OP (Original Poster) não sabe usar nem substrings, tenho de começar pelo começo…

Thingol,
Realmente eu não sei ainda trabalhar com substrings… Mas do jeito que vc falou resolveu meu problema em parte. Assim ele inverteu a data do jeito que eu queria. Agora essa data teria que ser armazenada num banco de dados. mas eu digito a data e clico em salvar ele não salva. O Banco que eu uso é o mysql.
Eu tenho a seguinte linha de comando

String QueryInsert = "insert into cadastra(data) values("+dataInvertida+")";

mas quando eu vou acesar o banco ele não aceita, aparece outro valor…
Eu queria saber como invertia a data porque o MySQL só aceita o dado de data no formato yyyy-mm-dd
Entendeu?
MAs valew pela ajuda…

Vamos supor que sua data chegue assim dd/mm/yyyy vc pode usar esse método:

public String formataDataInsert(String data){
		String[] dataFormatada  = data.split ("/");
		data = dataFormatada[2] + "-" + dataFormatada[1] + "-" + dataFormatada[0] + " 00:00:00";
		System.out.println("data formatada" + data);
		return data;
}

voce tb pode usar o charAt()
que e quase a mesma coisa, o numero q voce colocar ali no meio
e q letra ele vai pegar
sendo q ele começa a contar do 0
por exemplo

c a s a
0 1 2 3

a variavel x recebe casa
se eu quizer pergar a letra s
x.charAt(2)
ele retornara o s, ai voce coloca eim qualquer variavel
tem um jeito mais facil

mais eu fiz assim
i=x.length();

while(i>=0)
{
String+=x.charAt(i);
i–;
}
JOptionPane.showMessageDialog(null,“ao contrario”,+String);

Man, queria uma ajuda. tipo eu tenho que ler uma string exp.: " casa bola carro …" q tenho que imprimir a string ao contrario tipo “carro bola casa”. de forma que nao importe a quantidade de palavras a frase tera de ser invertida.

eu fiz um aqui mas so sei pra duas palavras :smiley:

public static void main(String[] args) {
String s=" “;
char p = 0;
String s1=JOptionPane.showInputDialog(“Entre com o nome:”);
s1=s1.trim();
while( s1.indexOf(” “)>0)
{
p=(char) s1.indexOf(” “);
s=s1.substring(0,p);
s1=s1.substring(p+1);
s1=s1.trim();
}
JOptionPane.showMessageDialog(null, “Nome ao contrario\n”+s1+” "+s)
}
}
espero resposta

Use split (método de java.lang.String) para quebrar a string em palavras, e depois concatene as palavras na ordem contrária. Simples, não?

[quote=thingol]Use split (método de java.lang.String) para quebrar a string em palavras, e depois concatene as palavras na ordem contrária. Simples, não?
[/quote]

se usar o metodo reverse?

public class Sb3 {
	
	public static void main(String[] args) {
StringBuilder sb =new StringBuilder();
sb.append("camilo");
System.out.println(sb);
System.out.println(sb.reverse());
	}}

flw!

Ele não quer a string ao contrário, mas as palavras. (Ele não quer “luis inacio” -> “oicani siul” mas sim “inacio luis”).

[quote=Manux]Thingol,
Realmente eu não sei ainda trabalhar com substrings… Mas do jeito que vc falou resolveu meu problema em parte. Assim ele inverteu a data do jeito que eu queria. Agora essa data teria que ser armazenada num banco de dados. mas eu digito a data e clico em salvar ele não salva. O Banco que eu uso é o mysql.
Eu tenho a seguinte linha de comando

String QueryInsert = "insert into cadastra(data) values("+dataInvertida+")";

mas quando eu vou acesar o banco ele não aceita, aparece outro valor…
Eu queria saber como invertia a data porque o MySQL só aceita o dado de data no formato yyyy-mm-dd
Entendeu?
MAs valew pela ajuda…[/quote]

Tenta assim:

String QueryInsert = "insert into cadastra(data) values('"+dataInvertida+"')";

Porque a data precisa ser um “String”, você estava colocando algo como: 2008-03-28. E isso tentava incluir “1977”

String recebida="";
StringTokenizer a = new StringTokenizer( minhadata ) ;
while( a.hasMoreTokens() )
{
recebida = a.nextToken("-") + “-” + recebida ;
}
recebida = recebida.substring(0, recebida.length-1);

Se o problema é para as datas, acredito que o SimpleDataFormat é a melhor opção, porque deixa o programa mais fácil de manter… Ou substrings, mas acredito que não é tão garantido, e se vier uma String menor???

Tente usar SimpleDataFormat como foi dito vai facilitar sua vida… e tente utilizar as tag code quando for postar códigos… vai facilitar a nossa.