Comparação de String

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.

[code]
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);
      } [/code]

[quote=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.

[code]
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);
      } [/code][/quote]

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

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

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

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.

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.

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

if(tamanho > maior_tamanho){
maior_palavra_ate_agora = palavra;
maior_tamanho = tamanho;
}
}[/code]

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!

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

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!

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.

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…[code]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
}

}[/code]Pra isso existe o equals.

Boa sorte!

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

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