Problema com .charAt()

8 respostas
J

Bom dia …
Estou com um problema em um exercicio em Java

O problema está quando tento atribuir um endereço de determinada frase para o endereço de outra
Nesse caso especifico estou invertendo a frase…
Se alguem pudr me ajudar agradeço…

import java.util.*;
public class Testando {

public static void main(String [] Args) {
    Scanner ledor=new Scanner(System.in);
    System.out.print("Digite uma frase");
    String frase=ledor.nextLine();
    String  inversa = Inverte(frase);
    System.out.print(inversa);

}
public static String Inverte(String frase){
    String invertida;
    int tam=frase.length();
    int x=0;
    int y=0;
    y=tam-1;
    while(x<tam){
       invertida.charAt(y)=frase.charAt(x);===> da pau aqui...
    y++;
    x++;}

}

}

8 Respostas

thiago.correa
public static void main(String[] args) throws IOException {
        System.out.println(i("teste"));
    }
    
    public static String i(String texto) {
        String _return = "";
        for (int i = texto.length() - 1; i >= 0; i--) {
            _return += texto.charAt(i);
        }
        return _return;
    }
yorgan
Amigo, não seria mais facil fazer assim:

String a = string;

String b = “”;

int t = a.length() - 1;

for (int i=0; i < t; i++) {

b += a.charAt(t-i);

}

Abraço

foxpv

amigo… sempre q for postar um código coloca ele assim:

//AQUI FICA SEU CÓDIGO

facilita a leitura e consequentemente o entendimento…
qto ae seu problema tenta isso:

String invertida = "";
invertida += frase=charAt(index);
thiago.correa

A propósito o que acontece no teu programa é que você declarou a variável invertida, porém ela não existe ainda pois não foi dado o instanciada (no caso do objeto String nenhum texto foi atribuído a ele) ao invés de fazer:

String invertida;

faça

String invertida = “”;

e teste de novo!

danielbussade

Olá para fazer este exercício que você quer você pode transforma o objeto do tipo String em um array de char, no qual você pode indexar!
Ex:

import java.util.*; 
	
public class Testando {
	public static char[] Inverte(char[] fraseCorreta){ 
		int tam=fraseCorreta.length;
		char[] invertida= new char[tam];
		int y=0; 
		for (int i = 0; i < invertida.length; i++) {
			invertida[y]=fraseCorreta[tam - 1];
		    y++;
		    tam--;
		    } 
		return invertida;
		} 
	

	public static void main(String [] Args) { 
	Scanner ledor=new Scanner(System.in); 
	System.out.print("Digite uma frase"); 
	String frase=ledor.nextLine(); 
	char[] inversa = Inverte(frase.toCharArray()); 
	System.out.print(inversa); 

	 }

}

Qualquer coisa posta ai!

Att

danielbussade

b += a.charAt(t-c);

Legal, não sabia que uma String poderia receber assim, fica bem mais fácil queo exemplo que dei!

Valeu

thiago.correa

danielbussade:
b += a.charAt(t-c);

Legal, não sabia que uma String poderia receber assim, fica bem mais fácil queo exemplo que dei!

Valeu


Não só String como também inteiros e pontos flutuantes por exemplo!!

Marky.Vasconcelos

Evite usar algo assim

public static String i(String texto) {   
    String _return = "";   
    for (int i = texto.length() - 1; i >= 0; i--) {   
        _return += texto.charAt(i);   
    }   
    return _return;   
}

Prefira a classe StringBuilder

public static String i(String texto) {   
    StringBuilder _return = new StringBuilder();   
    for (int i = texto.length() - 1; i >= 0; i--) {   
        _return.append(texto.charAt(i));   
    }   
    return _return.toString();   
}

E já que estamos usando StringBuilder porque não mudar esse método para algo assim?

public static String i(String texto) {   
    StringBuilder _return = new StringBuilder(texto);
    return _return.rewind().toString();   
}
Criado 5 de novembro de 2007
Ultima resposta 5 de nov. de 2007
Respostas 8
Participantes 6