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
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.
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.
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
}