Boa noite amigos, estou precisando saber aonde estou errando no meu código, se alguém puder me ajudar ficaria grato.
[code]package Exercicios;
import javax.swing.JOptionPane;
public class Ex1 {
public static void main(String[] args) {
String aux = "", sexo ;
int idade , idadeMaior=0 , cont = 0 ;
String olhos, cabelos;
do{
aux = JOptionPane.showInputDialog(null,"Informe sua idade");
idade =Integer.parseInt(aux);
sexo = JOptionPane.showInputDialog(null,"Informe o sexo utilizando M para Masculino ou F para Feminino");
while (sexo != "m" || sexo!= "f"){
JOptionPane.showMessageDialog(null," Sexo Inválido","ERRO",JOptionPane.ERROR_MESSAGE);
sexo = JOptionPane.showInputDialog(null,"Informe o sexo utilizando M para Masculino ou F para Feminino");
}
olhos = JOptionPane.showInputDialog(null,"Informe a cor dos seus olhos");
cabelos = JOptionPane.showInputDialog(null,"Informe a cor dos seus cabelos");
if (idadeMaior < idade){ //if para achar a maior idade,começando com zero e comparando com as idades de entrada
idadeMaior = idade;
}
if (olhos=="azuis" && sexo=="m"){
cont= cont+1;
}
}while(idade > 0);
JOptionPane.showMessageDialog(null,"A MAIOR IDADE É : " + idadeMaior + "\n"+ "A QUANTIDADE DE HOMENS COM OLHOS AZUIS É DE : " + cont ,"RESULTADO DA PESQUISA",JOptionPane.INFORMATION_MESSAGE);
}
Sua declaração de variáveis está confusa, inicie todas elas, sexo, olhos e cabelos… Para comparar String devemos utilizar o método equals e não ==, pesquise sobre isso…
[quote=phorind]Amigo, especifique o que deseja e o que acontece por favor.
Aparentemente, existe o erro de comparação de Strings onde só comparamos com == no caso de variáveis do tipo char.
Para comparação de String use string1.equals(“string2”); que retorna true or false.[/quote]
Amigo obrigado pela explicação, pois não lembrava que tinha que usar o equals em comparação de Strings, pois tem + ou - 1 ano que não trabalhava com java, mas a faculdade exigi né fazer o que. Mas a minha dúvida é como posso cria um laço de repetição que compare se as Strings são diferentes, e force o usuário a entrar com o conteúdo que eu quero?
desde já obrigado pela ajuda
[quote=tallys][quote=phorind]Amigo, especifique o que deseja e o que acontece por favor.
Aparentemente, existe o erro de comparação de Strings onde só comparamos com == no caso de variáveis do tipo char.
Para comparação de String use string1.equals(“string2”); que retorna true or false.[/quote]
Amigo obrigado pela explicação, pois não lembrava que tinha que usar o equals em comparação de Strings, pois tem + ou - 1 ano que não trabalhava com java, mas a faculdade exigi né fazer o que. Mas a minha dúvida é como posso cria um laço de repetição que compare se as Strings são diferentes, e force o usuário a entrar com o conteúdo que eu quero?
desde já obrigado pela ajuda [/quote]
Voce pode usar o laço como faz com qualquer outra variável, porem na hora de comparar usa o equals.
do{
}while(!string1.equals(string2));
acredito que seja isso que voce queira, vai fazer o bloco enquanto as strings forem diferentes.
Caso tenha duvida sobre comandos de repetição, procure tópicos relacionados.
[quote=phorind][quote=tallys][quote=phorind]Amigo, especifique o que deseja e o que acontece por favor.
Aparentemente, existe o erro de comparação de Strings onde só comparamos com == no caso de variáveis do tipo char.
Para comparação de String use string1.equals(“string2”); que retorna true or false.[/quote]
Amigo obrigado pela explicação, pois não lembrava que tinha que usar o equals em comparação de Strings, pois tem + ou - 1 ano que não trabalhava com java, mas a faculdade exigi né fazer o que. Mas a minha dúvida é como posso cria um laço de repetição que compare se as Strings são diferentes, e force o usuário a entrar com o conteúdo que eu quero?
desde já obrigado pela ajuda [/quote]
Voce pode usar o laço como faz com qualquer outra variável, porem na hora de comparar usa o equals.
do{
}while(!string1.equals(string2));
acredito que seja isso que voce queira, vai fazer o bloco enquanto as strings forem diferentes.
Caso tenha duvida sobre comandos de repetição, procure tópicos relacionados.
Pessoa refiz o código com a colaboração dos amigos acima , mas os erros ainda continuam coloquei as comparações como haviam me dito mas não consigo fazer uma comparação composta , meus laços de repetição e os ifs compostos estão dando erro. Se alguem puder me ajudar
package exercicio;
import javax.swing.JOptionPane;
public class Exercicio {
public static void main(String[] args) {
String aux= "", sexo = "" ;
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"))){ // 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);
}
}