String

13 respostas
R

boa tarde pessoal,

tenho que fazer um exercicio de java para a faculdade e eu não sei direito como fazer.

tenho que criar um metodo que recebe uma string e devolver ela escrita alcontrario?

estou tentando assim
fiz um for(int i=0;i<=variavel.length;i–)
e não estou conseguindo fazer o resto se alguem puder me ajudar ficarei muito grato.

At.

13 Respostas

marcelo.bellissimo

http://www.guj.com.br/posts/list/15982.java

Bem, eu ia falar pra voce usar o método reverse() do StringBuilder, mas com certeza isso é um exercício pra lógica e não um teste de conhecimento de API’s… veja os exemplos nesse tópico…

R

Boa tarde, eu dei uma lida mas não me identifiquei muito com esse codigo porque sou iniciante em java, mas mesmo assim muito obrigado, não teria um outro jeito que seria mais facil RS.

At.

marcelo.bellissimo

Nada muito mágico… assim:

String teste = "abcde"; String testeInverso=""; for (int i = 1; i <= teste.length(); i++){ testeInverso+=teste.charAt( teste.length() - i ); } System.out.println(testeInverso);//exibe 'edcba'

Alguns detalhes pra se levar em conta, não sei se você sabe, mas todos os “índices” (index) do Java começam do 0, por isso o ‘for’ foi feito dessa maneira… em uma String de tamanho n=5 (indices 0 ao 4… 0, 1, 2, 3, e 4), quero um for que comece com i=1, e que minha nova String tenha o caractere no indice n-i (5-1=4, ou seja, o ultimo indice da String original)… e assim faço até que ‘i’ seja menor ou igual á 5, executando assim 5 trocas de posição dos caracteres da String…

Edit:
Tenho certeza que alguém vai falar “você deve usar StringBuilder e mimimimimi…” , então:

String teste = "abcde"; StringBuilder testeInverso = new StringBuilder(); for (int i = 1; i <= teste.length(); i++){ testeInverso.append(teste.charAt( teste.length() - i )); } System.out.println(testeInverso);
Agora sim…

R

muito obrigado pessoal chegando em casa irei testar esse dois jeitos.

muito obrigado.

R

Pessoal muito obrigado pela ajuda no codigo que me retorna uma estring de tras pra frente
agora eu tenho que colocar isso dentro de um metodo e eu fiz assim mas não estou conseguindo fazer

segue o codigo

import javax.swing.JOptionPane;

public class Prova {

public static void main(String[] args) {

	String nome=JOptionPane.showInputDialog(null,"informe seu nome:");
     }
public void invert(String invertido){
	String nome1=invertido;
	String nome2="";
	for (int i=1;i<=nome1.length();i++){
	nome2 +=nome1.charAt(nome1.length()-1);
	}System.out.println("nome envertido é :"+invertido);
	
}

}

eu tentei adaptar o codigo que vocês me passaram dentro desse metodo mas não estou conseguindo
eu estou lendo bastante sobre criação de metodos mas eu não encontrei nada muito facil de entender
mas vou continuar até entender se caso alguem puder me dar uma ajuda ficarei muito agradecido.

peczenyj

Não usem += para concatenar strings, isso gera objetos extra que vcs não vão usar. Usem um StringBuilder para isso…

T

Cara sem querer ser chato… mas tipo… vc tem que estudar, porque isso é muito simples.

A dica que vou dar é pra você prestar mais atenção as aulas, e pra você chegar no seu professor e dizer que você esta com dificuldade pra entender com as lógica em java funciona.

tipo assim toda linha de texto dentro de uma variável é um objeto STRING

nao saber como funciona um FOR e ++ e – ou concatenação é pouco produtivo no aprendizado. Aprenda do inicio denovo devagar Operadores, variáveis, loops, classes e etc…

Abraço

Espero ajudar

renamed

Uma vez li aqui no fórum que o próprio compilador do Java trocava

String a = "Olá, "; a += "tudo bem?";

por

StringBuilder a = new StringBuilder();
a.append("Olá, ");
a.append("tudo bem?");

Mas não sei se isso é verdade!

E

Uma vez li aqui no fórum que o próprio compilador do Java trocava…

Não, ele não faz isso. Ele faz uma outra coisa:

String a = "Olá, ";  
 a += "tudo bem?";

–>

String a = "Olá, ";  
 a = (new StringBuilder (a).append ("tudo bem?")).toString();

que é bem mais ineficiente que você mesmo criar seu próprio StringBuilder.

B

rafaelrfl, o que você fez está quase correto.
Faltou apenas você chamar o método no seu método principal

Segue abaixo o código e compare com o seu.

public static void main(String[] args) {

        String nome=JOptionPane.showInputDialog(null,"informe seu nome:");
        
        invert(nome);
      
    }
    public static void invert(String invertido)
    {
        String nome1=invertido;
        String nome2="";
        for (int i=1;i<=nome1.length();i++)
        {
            nome2 +=nome1.charAt(nome1.length()-i);
        }
        System.out.println("nome envertido é :"+nome2);
    }

Outro detalhe importante é que você estava pegando nome1.lenght() - 1. Dessa maneira ele sempre pegaria a última letra.
Eu modifiquei e coloquei nome.length() - i. Assim ele irá pegar o índice do loop.

WellingtonRamos

Faria só um pouco diferente

String string = "rever";
String inverso = "";
for(int i = string.length()-1; i >=0 ; i--) {
    inverso += string.charAt(i); //Não preciso fazer a subtração em cada loop.
}
WellingtonRamos

rafaelrfl:
Pessoal muito obrigado pela ajuda no codigo que me retorna uma estring de tras pra frente
agora eu tenho que colocar isso dentro de um metodo e eu fiz assim mas não estou conseguindo fazer

segue o codigo

eu tentei adaptar o codigo que vocês me passaram dentro desse metodo mas não estou conseguindo
eu estou lendo bastante sobre criação de metodos mas eu não encontrei nada muito facil de entender
mas vou continuar até entender se caso alguem puder me dar uma ajuda ficarei muito agradecido.


Use a tag [ code] para colocar seus códigos. Após colar o código, selecione-o e clique me CODE.

Você não está prestando atenção no que está fazendo. Pois o problema é básico.
Após obter o nome, chame o teu método passando o nome como parâmetro.
O teu método invert possui um erro também. Você não vai conseguir imprimir invertido pois está usando a variável errada na hora de imprimir.

WellingtonRamos

A concatenação de Strings com o += só não têm problemas se for num código direto. Se for num loop, aí sim há alguma perda mas não diria q seja grave.

Por questões de legibilidade e até mesmo aprendizado, acho que vale a pena utilizar +=

Deve-se avaliar se custa tão caro a concatenação de Strings ao invés do uso de StringBuilder. No caso da necessidade do tópico não acho que seja realmente relevante.

Criado 7 de junho de 2010
Ultima resposta 10 de jun. de 2010
Respostas 13
Participantes 8