Ajuda com Comparação entre Strings -RESOLVIDO

Amigos estou tendo problemas em comparar Strings ja usei o metodo equals(), mas acho que estou fazendo algo errado se alguém, pois estou tentado fazer alguns Whiles e ifs que se forem falsos façam determinada condição mas não funcionam e se puderem me ajudar agradeceria.
ja procurei soluções e mas nada que desse certo.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package exercicio;

import javax.swing.JOptionPane;

public class Exercicio {

       public static void main(String[] args) {
  
       
		int idade = 0 , idadeMaior=0 , soma  = 0 , cont = 0,cont0 = 0, cont1 = 0, cont2 = 0 , somaIdade = 0;
		String olhos = "", cabelos = ""; 
        double mediaIdade = 0 , percM = 0 ;
			
		
	do{	
                    
		idade = InOut.leInt("Informe sua idade: ");
		
                sexo = InOut.leString("Informe o sexo Masculino ou Feminino:");
		
                while (!sexo.equals("masculino")) || !sexo.equals("feminino"))[b] <---- ERRO SEMPRE ENTRA NO WHILE[/b]
                { // laço de repetição forçando ao usuário a entrar com o tipo de sexo masculino ou feminino;
                        
                   JOptionPane.showMessageDialog(null," Sexo Inválido","ERRO",JOptionPane.ERROR_MESSAGE);
                   sexo = InOut.leString("Informe o sexo");
                        
                }
                
                olhos = InOut.leString("Informe a cor dos seus olhos : Azul - Verde - Preto ou Castanho:"); 
		
                while((!olhos.equals("azul")) || (!olhos.equals("preto")) || (!olhos.equals("castanho")) || (!olhos.equals("verde"))){ // laço de repetição forçando ao usuário a entrar com o tipo de cor de olhos Azuis , Verdes , Pretos ou Castanhos
                        
                    JOptionPane.showMessageDialog(null," Cor de olho Inválido","ERRO",JOptionPane.ERROR_MESSAGE);
                    olhos = InOut.leString("Informe a cor dos seus olhos Azul - Verde - Preto ou Castanho:");

                }
                             
                cabelos = InOut.leString("Informe a cor dos seus cabelos : Loiro - Castanho ou Preto:");
                
                 while((!cabelos.equals("loiro")) || (!olhos.equals("preto")) || (!olhos.equals("castanho"))){ // laço de repetição forçando ao usuário a entrar com o tipo de cor de cabelos Loiros , Pretos ou Castanhos
                        
                    JOptionPane.showMessageDialog(null," Cor de cabelo Inválido","ERRO",JOptionPane.ERROR_MESSAGE);
                    cabelos = InOut.leString("Informe a cor dos seus cabelos Loiro - Castanho ou Preto:");

                }
               
               if(sexo.equals("feminino")){ //if para comparar se os sexos de entrada são iguais a feminino
                   
                   cont0++; //Variavel que armazenara a quantidade de mulheres 
                   
               }
                   
               if(sexo.equals("feminino") && (idade>=18) || (idade<=35)){ //if para comparar se os sexos de entrada são iguais a feminino e se as idades estão entre maior ou igual a 18 e menor igual a 35  
                                             
                       cont ++; // Variavel onde sera armazenada a quantidade de pessoas que estão dentro das características solicitadas
                                           
                   }
                   
               if (idadeMaior < idade){  //if para achar a maior idade,começando com zero e comparando a variavel idadeMaior com as idades de entrada
			
				idadeMaior = idade; // Variavel idadeMaior armazenara sempre a idade maior
	           }
		
				if ((olhos.equals("azuis")) && (sexo.equals("masculino")) && (idade != 0)){ //if para comparar se olhos de entrada são iguais a azuis  e o sexo igual a masculino
			
				soma++;  // // Variavel onde sera armazenada a quantidade de pessoas que estão dentro das características solicitadas
               
			   }
		
               if (idade<18 && idade >64){ // if para comparar se as idades de entrada estão entre menor que 18 e maior que 64
                   
                  cont1++; // Variavel onde sera armazenada a quantidade de pessoas que estão dentro das características solicitadas
                   
               }
               
               if((sexo.equals("feminino"))&& (cabelos.equals("loiro"))){ //if para comparar se o sexos de entrada são iguai a feminino e o cabelo da cor loiro
                 
                   somaIdade = somaIdade + idade ; //Variavel onde sera armazenada todas as idades
                   cont2++; // Variavel onde sera armazenada a quantidade de pessoas que estão dentro das características solicitadas
                   
               }
                                            
               
	}while(idade > 0);
        
            mediaIdade = somaIdade/cont2; // Variavel receberá a média das idades das mulheres com cabelos loiros
            percM = (cont*100)/cont0;        
		
		
		JOptionPane.showMessageDialog(null,"A MAIOR IDADE É:  " + idadeMaior +
                "\n"+"O PERCENTUAL DE MULHERES ENTRE 18 E 35 ANOS É:" + percM +"%"+
                "\n"+"A QUANTIDADE DE HOMENS COM OLHOS AZUIS É: " + soma+
                "\n"+"A QUANTIDADE DE PESSOAS COM IDADE MENOR QUE 18 E MAIOR QUE 64 É: " + cont1+
                "\n"+"A MÉDIA DE IDADE DAS MULHERS COM CABELOS LOIROS SÃO: " +mediaIdade,"RESULTADO DA PESQUISA",JOptionPane.INFORMATION_MESSAGE);
		
    }
}

Com essa lógica ele vai sempre entrar no while, se o usúario digitar “masculino”, sexo não vai ser igual a “feminino”, portanto vai entrar no while e se digitar “feminino” , sexo não vai ser igual a “masculino”, logo também vai entrar no while.

Só complementando, para que o Java ignore se o usuário digitou em MAIÚSCULO , minúsculo ou de QuALquEr jEIto, use .equalsIgnoreCase();

:thumbup:

[quote=cfred][quote=tallys]

 while (!sexo.equals("masculino")) || !sexo.equals("feminino"))[b] <---- ERRO SEMPRE ENTRA NO WHILE[/b]

[/quote]
Com essa lógica ele vai sempre entrar no while, se o usúario digitar “masculino”, sexo não vai ser igual a “feminino”, portanto vai entrar no while e se digitar “feminino” , sexo não vai ser igual a “masculino”, logo também vai entrar no while.[/quote]

Mas o operador lógico or funciona da seguinte maneira, uma das duas condições tem que ser verdadeira para que entre na condição.Se as 2 condições forem falsas ele não executa os comandos, mas uma das duas for verdadeira ele executa. Nesse trecho do código estou tentando forçar o usuário a entrar com pelo menos uma dessas opções pois se as 2 forem falsas ele entra no while.

Então o que tu queres é:

while (!sexo.equals("masculino")) && !sexo.equals("feminino"))

ou, como tu talvez estejas a pensar:

while (! (sexo.equals("masculino") || sexo.equals("feminino")))