Comparação de String

11 respostas
H
Ola pessoal gente boa. Eu gostaria de saber se o meu codigo está indo no caminho certo. Não postei tudo porque eu quero tentar fazer sosinho. No programa eu preciso fazer isso: apresentar o nome com o maior numero de caracteres. Ai eu fiz assim logo abaixo. Eu não sei esta certo.
public class Principal
{
   public Principal()
   {
       Pessoa p = new Pessoa("Rolf","000",43);
        Pessoa p1 = new Pessoa();
        p1.setIdade(50);

        Pessoa[]vetor = new Pessoa[2];
        String tamanho,aux;
       
        for(int x=0; x<vetor.length; x++)
        {
            
          for(int j=0;j<vetor.length;j++)
          {
            vetor[x] = new Pessoa();
            String nome = JOptionPane.showInputDialog("Digita o seu Nome");
            vetor[x].setNome(nome);
            if (vetor[x].setNome()> vetor[j].setNome()) // Aqui eu não sei se está certo a comparação de string?
                {
                  aux = vetor[x].getNome(nome);
                    
                }

             System.out.println("Numero de Caracteres do Nome:\t"+vetor[x].nome.length());
              System.out.println("Nome:\t\t"+ vetor[x].nome);
          }

11 Respostas

G
halm:
Ola pessoal gente boa. Eu gostaria de saber se o meu codigo está indo no caminho certo. Não postei tudo porque eu quero tentar fazer sosinho. No programa eu preciso fazer isso: apresentar o nome com o maior numero de caracteres. Ai eu fiz assim logo abaixo. Eu não sei esta certo.
public class Principal
{
   public Principal()
   {
       Pessoa p = new Pessoa("Rolf","000",43);
        Pessoa p1 = new Pessoa();
        p1.setIdade(50);

        Pessoa[]vetor = new Pessoa[2];
        String tamanho,aux;
       
        for(int x=0; x<vetor.length; x++)
        {
            
          for(int j=0;j<vetor.length;j++)
          {
            vetor[x] = new Pessoa();
            String nome = JOptionPane.showInputDialog("Digita o seu Nome");
            vetor[x].setNome(nome);
            if (vetor[x].setNome()> vetor[j].setNome()) // Aqui eu não sei se está certo a comparação de string?
                {
                  aux = vetor[x].getNome(nome);
                    
                }

             System.out.println("Numero de Caracteres do Nome:\t"+vetor[x].nome.length());
              System.out.println("Nome:\t\t"+ vetor[x].nome);
          }

Se você quer comparar duas Strings usa o comando "equals"
Ex: String a = "Teste";
String b = "Teste2";

if (a.equals(b))

ou se você quer comparar o tamanho tenta usar o .length

if (a.length() == b.length)

isso deve resolver.... abraço

thiago.correa

A resposta é não!
Para comparar o tamanho do texto usa-se o método length

System.out.println(“thiago”.length());

B

Faça o programa em duas partes, a primeira pegando todos os nomes e colocando no vetor, e a segunda analisando o vetor.

E comparações entre Strings são feitas com os métodos equals, compareTo e as versões ignoreCase deles.

peczenyj

apresentar o nome com o maior numero de caracteres.

Ora ora... dado um vetor de strings, bastaria varrer este vetor armazenando o elemento com o maior numero de caracteres ate aquele momento. É bem razoavel para poucas quantidades de palavras.

for(String palavra : palavras){
tamanho = palavra.length();

if(tamanho > maior_tamanho){
maior_palavra_ate_agora = palavra;
maior_tamanho = tamanho;
}
}
M

Como você não colocou o resto do seu código não dá pra saber mais.
Crie métodos específicos para cada operação.
Retire seu código do construtor.

Boa sorte!

H

Meu amigo voce falou em varrer o vetor Ok. Mas se eu colocasse o comparteTO ou o equals. Na verdade eu não sei qual é a diferença. Mas daria ou não . abraço

M

halm, como você disse, você precisa apresentar o nome com o maior número de caracteres.
Logo a proposta do peczenyj é válida: varrer o array e encontrar o maior nome utilizando o length. E nesse caso equals e compareTo não te servirão.
Quando falamos de String:
1-) o equals faz uma comparação do conteúdo de duas strings e retornará true ou false
2-) o compareTo faz uma comparação caracter-a-caracter de duas strings e retornará um valor do tipo int. Quando equals retorna true, comparteTo retorna 0 (zero).
Isso vale para String.
Esse é um assunto que deve ser estudado com mais profundidade, pois você deve entender como o equals funciona para comparação com outras classes, assim como o compareTo.

Boa sorte!

S

comparação de string:

String a = “a”;
String b = “b”;

if (a == b) <-- na verdade esta condição está fazendo uma verificação da referência das duas strings que nunca serão iguais, a menos que use o if (a == a) , portanto, quando for fazer comparação de string, use o a.equals(b) para saber se é igual retornando true, ou utilize o compareTo ou compateToIgnoreCase.

Nestes dois casos o retorno do método será um int no qual, negativo para caso a string que foi passada como argumento seja maior que a string utilizada, 0 para strings iguais e positivo para string utilizada maior que a string dentro do parâmetro do método.

M
Uma comparação com == de duas String pode retornar true (claro, as referências serão as mesmas). Tem um artigo sobre isso. Quem quiser brincar com o código...
public class TesteIgualIgual {

	public static void main(String[] args) {

		String a = "a";
		String b = "a";
		String c = new String("a");
		
		System.out.println("Aqui da true: " + (a == b));
		System.out.println(Integer.toHexString(System.identityHashCode(a)));
		System.out.println(Integer.toHexString(System.identityHashCode(b)));
		System.out.println(a == c);
		System.out.println(Integer.toHexString(System.identityHashCode(c)));
		
		// Adaptado do livro A Programmer´s Guide to Java SCJP Certification 3rd Edition (pag 446)
		String strA = new String("The Case was thrown out of Court");
		String strB = new String("the case was thrown out of court");
		String strC = strA.toLowerCase();
		
		String strD = strB.toLowerCase();
		String strE = strA.toUpperCase();
		
		System.out.println(strC == strA);      // false
		System.out.println("Aqui da true: " + (strD == strB));      // true
		System.out.println(strE == strA);      // false
		
		String strF = strA.toLowerCase();
		System.out.println(strF == strB); 	   // false
	}
}
Pra isso existe o equals.

Boa sorte!

H

galera que sinal é esse que o peczenyj colocou no meio do for? Seria : isso ou :: isso? Não seria OU? Abraço

ViniGodoy

Ele usou o for each (para cada). Esse for aqui:

for(String palavra : palavras){

Significa o mesmo que esse aqui:

for (int i = 0; i < palavras.length; i++) { String palavra = palavras[i];

Mais informações: http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html

Criado 5 de abril de 2010
Ultima resposta 6 de abr. de 2010
Respostas 11
Participantes 8