Erro no if do metodo bolha

Olá Tudo bem…
bom estou com problema aqui não sei oque pode ser ja tentei arrumar no metodo bolha que mais tarde vou usa-lo para ordenar por altura esta dando um erro e nao consigo descobrir vou postar as duas classes eu quero dar continuidade mais com este erro nao consigo desde já agradeço a ajuda.



public class Pessoa {

	String nome;
	String altura;
	
	public Pessoa(String n, String a) {
		this.nome = n;
		this.altura = a;
		
	}
	public String Altura(){
		return altura; 
		
	}
	//metodo mostrar pessoa
	//public void mostrarPessoa(){
		//System.out.println("Nome: " + nome + "Altura" +altura);
	//}
	public void mostrarPessoa() {
		System.out.println("Nome: " + nome + "Altura" +altura);
		
	}
}




//import java.util.LinkedList;
//import java.util.List;

public class VetorDePessoas {

	// public Pessoa[] pessoa = new LinkedList<Pessoa>();
	Pessoa[] pessoa;
	private int i = 0;

	//construtor
	/**
	 * @param tamanhoMax
	 */
	public VetorDePessoas(int tamanhoMax) {
		pessoa = new Pessoa[tamanhoMax];

	}

	// metodo insere
	public void inserir(Pessoa pessoas) {
		if (i < pessoa.length) {
			pessoa[i++] = pessoas;
		}
	}

	public void listagem() {
		for (int aux = 0; aux < i; aux++) {
			// System.out.println("Vetor [" +pessoa[aux].nome);
			((Pessoa) pessoa[aux]).mostrarPessoa();

		}
	}

	// metodo bolha
	public void bolha() {
		int out, in, i = 0;
		// ordena o valor ate o começo do vetor i-1 que significa que nao esta
		// zerado o decremento
		for (out = i - 1; out > 0; out--) {
			for(in = 0; in < out; in++){
				if(pessoa[in] > pessoa[in + 1]){
					
					Pessoa aux = pessoa[in];
					pessoa[in] = pessoa[in +1];
					pessoa[in +1] = aux;
				}
			}
			

		}
	}


qual é o erro que da?

if(pessoa[in] > pessoa[in + 1]) /????
//Como o compilador vai adivinhar que uma pessoa a maior que a outra?
// Ou você implementa a interface Comparable ou você compara algum atributo da sua classe (altura ou nome), só não pode comparar pessoa com pessoa...

entao fernandosavio eu coloquei dessa forma if(pessoa[in].altura > pessoa[in + 1].altura )
tambem da erro.
ou deveria fazer if(pessoa[in].altura > pessoa[in + 1].nome) ??

não estou conseguindo tentei todas as formas ditas aqui, continua com erros

comparando por altura:

	if(altura[in] > altura[in+1]){
					
					int aux = altura[in];
					altura[in] = altura[in +1];
					altura[in +1] = aux;

Desculpem.

bom consegui fazer dessa maneira

if(pessoa[in].altura > pessoa[in+1].altura){
					
					 aux = pessoa[in];
					pessoa[in] = pessoa[in +1];
					pessoa[in +1] = aux;

mais o erro que dá e que se eu coloco int aux = pessoa diz que impossivel converter de Pessoa para int e agora que faço e porque o atributo la emcima nao esta como int ?

Corrigindo:

if(pessoa[in].altura > pessoa[in+1].altura){
					
					int aux = pessoa[in].altura;
					pessoa[in].altura = pessoa[in +1].altura;
					pessoa[in +1].altura = aux;

acabaramse os erros do if

Tente desta maneira:

public void bolha() {
   for ( int i = 0; i &lt; ( pessoa[i].lenght ) - 1; i++ ) {

      if ( pessoa[i] &gt; pessoa[i + 1] ) {

         Pessoa aux = pessoa[i + 1];
         pessoa[i + 1] = pessoa[i];
         pessoa[i] = aux; 

      }

   }

}

Você utilizou muitas variáveis para pouca coisa.

ok vou seguir sua dica Marcelo de Andrade

[code] for (out = i - 1; out > 0; out–) {
for(in = 0; in < out; in++){
if(pessoa[in].altura > pessoa[in+1].altura){

                int aux = pessoa[in].altura;  
                pessoa[in].altura = pessoa[in +1].altura;  
                pessoa[in +1].altura = aux;  

[/code]
mais essa maneira esta errado pois acabaram se os erros

vou tentar sua dica obrigado Marcelo de Andrade

entao brother Marcelo de Andrade tentei sua dica e da erro
no leght diz que nao podesse ser resolvido ou no e um campo

no if (pessoa[i] > pessoa[i + 1]) { diz que e perador > indefido para para o tipo trabalho.Pessoa

Tá tudo muito confuso já!!!
Qual é o problema que está dando agora e qual é o código?
Me atualiza por favor…

O exemplo que mostrei era para você implementar, você só copiou. O que você quer é comparar a altura, então modifique para:

pessoa[i].altura &gt; pessoa[i + 1].altura

E não:

pessoa[i] &gt; pessoa[i + 1]

Posta teu código modificado com o que você fez e como ficou.

entao Brow seguinte o amigo Marcelo de Andrade me deu essa dica

public void bolha() {  
   for ( int i = 0; i < ( pessoa[i].lenght ) - 1; i++ ) {  
  
      if ( pessoa[i] > pessoa[i + 1] ) {  
  
         Pessoa aux = pessoa[i + 1];  
         pessoa[i + 1] = pessoa[i];  
         pessoa[i] = aux;   
  
      }  
  
   }  
  
}  

eu fiz como tu me falou assim:

public void bolha() {
		int out, in, i = 0;
		// ordena o valor ate o começo do vetor i-1 que significa que nao esta
		// // zerado o decremento
		for (out = i - 1; out > 0; out--) {
			for (in = 0; in < out; in++) {
				if (pessoa[in].altura > pessoa[in + 1].altura) {

					int aux = pessoa[in].altura;
					pessoa[in].altura = pessoa[in + 1].altura;
					pessoa[in + 1].altura = aux;
				}
			}

		}

é dessa forma aqui embaixo acabaram os erros, entao tentei a forma que o amigo Marcelo passou, no codigodele o leght da erro e no if do codigo da como operador > indefinido pra o Trabalho.Pessoa e isso.

agora eu nao sei se continuo dou sequencia e deixo o que nao esta aparecendo o erro ou mecho no codigo que o Marcelo passou.

ok Marcelo de Andrade entendido

Se tu quiser alterar teu código e der erro é só postar o código e os erros para podermos te ajudar…

sim sim fernandosavio valeu…

bom seguinte o . Length esta dando um erro então comparei dessa forma e o erro não mostra mais esta errado ?


 for (int i = 0; i < (pessoa[i].altura) - 1; i++) {

		 if (pessoa[i].altura > pessoa[i + 1].altura) {

		 int aux = pessoa[i + 1].altura;
		 pessoa[i + 1].altura = pessoa[i].altura;
		 pessoa[i].altura = aux;

no lugar de .lenght coloquei para .altura // o lenght daria o tamanho total do vetor seria isso ? e o altura ?

Na verdade olivercld
Você precisa utilizar o length para percorrer o vetor de pessoas inteiro independente do tamanho que tenha…
Entao é importante você saber:

Pessoa[] pessoa;
//length é um atributo (variável) da estrutura vetor
System.out.println("Tamanho do vetor: " + pessoa.length);

String palavra = "abcde";
//length é um método da classe String que conta quantas letras tem a String e retorna para quem chamou
System.out.println("Tamanho da palavra: " + palavra.length());

Você usou:

//Isso só funcionaria se fosse uma matriz (vetor de vetor), pois você receberia o tamanho do vetor na posição i
System.out.println(pessoas[i].length); 

//E esse só funcionaria se fosse um vetor de Strings, retornaria o tamanho da String e não do vetor
System.out.println(pessoas[i].length()); 

//E esse sim retorna a quantidade de elementos de um vetor
System.out.println(pessoas.length); 

Entendeu?

certo estou procurando entender…
bom mudei aqui

ficou assim agora fernandosavio

na classe Pessoa adicionei o atributo public int Lenght, nao acusa mais o erro no lenght

ficou assim agora:

for (int i = 0; i < (pessoa[i].lenght) - 1; i++) {

			if (pessoa[i].altura > pessoa[i + 1].altura) {

				Pessoa aux = pessoa[i + 1];
				pessoa[i + 1] = pessoa[i];
				pessoa[i] = aux;

Cara… a tua intenção é ordenar o vetor de Pessoas e para isso tu precisa do tamanho do vetor… E o tamanho do vetor se pega usando:

nomeVetor.length;
//e nao
nomeVetor[i].length;

Entao teu for ficaria assim:

for (int i = 0; i < (pessoa.lenght - 1); i++) {

Enquanto i (que igual a zero) for menor que o tamanho do vetor -1 faça …

Entendeu agora?

haa agora entendi, a questao em si era o [i] e como vc explicou la atraz que:

ok vou proseguir aqui. cara desculpe ai incomodo.
obrigado fernandosavio