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);
}
Comparação de String
11 Respostas
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
A resposta é não!
Para comparar o tamanho do texto usa-se o método length
System.out.println(“thiago”.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.
for(String palavra : palavras){
tamanho = palavra.length();
if(tamanho > maior_tamanho){
maior_palavra_ate_agora = palavra;
maior_tamanho = tamanho;
}
}
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.
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
}
}
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