A algunds dias atraz vi voces avaliliando o codigo de um outro novato , dai resouvi mandar o meu tambem para ver o que vocês acham.
estou iniciando no java agora , e como exercicio peguei meus antigos exercicios de logica e resolvi escrever em java veja so no que deu , o anuciando e o seguinte:
Faca um algoritmo que leia para 100 pessoas os seguintes dados : nome,Idade e sexo. determine
*numero de homens;
*numero de mulheres;
numero de pessoas com idade inferior a 30 anos.
Considerando que sera informado "M " para masculino e “F” para feminino.
veja so o que saiu
import corejava.*; // do livro coreJava volume 1
class pessoas
{ public pessoas(int Idade,String Nome,String Sexo)
{ this.Idade = Idade;
this.Nome = Nome;
this.Sexo = Sexo;}
public int getIdade()
{return Idade;}
public String getNome()
{return Nome;}
public String getSexo()
{return Sexo;}
private int Idade;
private String Nome;
private String Sexo;}
class pesquisa
{public pesquisa(pessoas[] clientes)
{this.clientes = clientes;
resultado();}
private void resultado()
{
int a = 0;
int b = 0;
int c = 0;
for(int x = 0 ; x < clientes.length ; x++ )
{
If ("M".equalsIgnoreCase(clientes[x].getSexo()))
{a++;}
if ("F".equalsIgnoreCase(clientes[x].getSexo()))
{b++;}
if (clientes[x].getIdade() <= 30)
{c++;}
}
System.out.println("");
System.out.println("Ha "+ a +" homens cadastrados." );
System.out.println("");
System.out.println("Ha "+ b +" mulheres cadastrados." );
System.out.println("");
System.out.println("Ha "+ c +" Clientes com menos de 30 anos " );
}
private pessoas[] clientes;
}
public class cadastro
{
public static void main(String[] args)
{
int[] Idade = new int[100];
String[] Nome = new String[100];
String[] Sexo = new String[100];
for(int x = 0; x < 5 ; x++)
{
Idade[x] = Console.readInt("Digite a Idade do Cliente");
Nome[x] = Console.readLine("Digite o Nome do Cliente");
Sexo[x] = Console.readLine("Dige M ou F Conforme o Sexo do Clinte");
}
pessoas[] clientes = new pessoas[100];
for (int x = 0 ; x< 5;x++)
{
clientes[x] = new pessoas(Idade[x],Nome[x],Sexo[x]);
}
pesquisa resultado = new pesquisa(clientes);
}
}
Faz assim: edite o seu post, coloque o codigo entre as tags e
, e ai damos uma olhada 
Rafael
import corejava.*; // do livro coreJava volume 1
class pessoas
{ public pessoas(int Idade,String Nome,String Sexo)
{ this.Idade = Idade;
this.Nome = Nome;
this.Sexo = Sexo;}
public int getIdade()
{return Idade;}
public String getNome()
{return Nome;}
public String getSexo()
{return Sexo;}
private int Idade;
private String Nome;
private String Sexo;}
class pesquisa
{public pesquisa(pessoas[] clientes)
{this.clientes = clientes;
resultado();}
private void resultado()
{
int a = 0;
int b = 0;
int c = 0;
for(int x = 0 ; x < clientes.length ; x++ )
{
If ("M".equalsIgnoreCase(clientes[x].getSexo()))
{a++;}
if ("F".equalsIgnoreCase(clientes[x].getSexo()))
{b++;}
if (clientes[x].getIdade() <= 30)
{c++;}
}
System.out.println("");
System.out.println("Ha "+ a +" homens cadastrados." );
System.out.println("");
System.out.println("Ha "+ b +" mulheres cadastrados." );
System.out.println("");
System.out.println("Ha "+ c +" Clientes com menos de 30 anos " );
}
private pessoas[] clientes;
}
public class cadastro
{
public static void main(String[] args)
{
int[] Idade = new int[5];
String[] Nome = new String[5];
String[] Sexo = new String[5];
for(int x = 0; x < 5 ; x++)
{
Idade[x] = Console.readInt("Digite a Idade do Cliente");
Nome[x] = Console.readLine("Digite o Nome do Cliente");
Sexo[x] = Console.readLine("Dige M ou F Conforme o Sexo do Clinte");
}
pessoas[] clientes = new pessoas[5];
for (int x = 0 ; x< 5;x++)
{
clientes[x] = new pessoas(Idade[x],Nome[x],Sexo[x]);
}
pesquisa resultado = new pesquisa(clientes);
}
}
Bom…
- Identacao pessima
- Variaveis nao seguem o padrao do Java ( primeira letra da variavel deve ser minuscula )
- Classes nao seguem o padrao do Java ( primeira letra deve ser maiuscula )
- Ordem de declaracao dos membros da classe estao por ultimo… o usual eh declarar logo no inicio da classe )
- Alguns if()'s deveriam estar aninhados em else-if, uma vez que voce esta verificando um mesmo tipo de assunto. Por exemplo, ao inves de fazer
if ("nome1".equals(nome)) {
// xxx
}
if ("nome2".equals(nome)) {
// yyy
}
if ("nome3".equals(nome)) {
// zzz
}
faca
if ("nome1".equals(nome)) {
// xxx
}
else if ("nome2".equals(nome)) {
// yyy
}
else if ("nome3".equals(nome)) {
// zzz
}
-
Voce esta fazendo 2 for()'s, quando poderia fazer tudo em 1 unico
-
Voce esta chamando o metodo “resultado()” diretamente do construtor. Isso nao eh exatamente o ciclo “esperado” na hora de processar, alem de nao ser tarefa do construtor fazer esse tipo de acao… voce teria que ter muito bem documentado o teu construtor afim de informar todas as acoes que ele executa. Ou seja, remova a chamada ao metodo resultado() do construtor, torne ele publico e chame explicitamente o metodo.
Uma rapida melhoria na parte visual do codigo te deixa com:
import corejava.*; // do livro coreJava volume 1
class Pessoas
{
private int idade;
private String nome;
private String sexo;
public Pessoas(int idade, String nome, String sexo)
{
this.idade = idade;
this.nome = nome;
this.sexo = sexo;
}
public int getIdade()
{
return this.idade;
}
public String getNome()
{
return this.nome;
}
public String getSexo()
{
return this.sexo;
}
}
class Pesquisa
{
private Pessoas[] clientes;
public Pesquisa(Pessoas[] clientes)
{
this.clientes = clientes;
}
public void resultado()
{
int a = 0;
int b = 0;
int c = 0;
for(int x = 0 ; x < clientes.length ; x++ ) {
if ("M".equalsIgnoreCase(clientes[x].getSexo())) {
a++;
}
else if ("F".equalsIgnoreCase(clientes[x].getSexo())) {
b++;
}
if (clientes[x].getIdade() <= 30) {
c++;
}
}
System.out.println("");
System.out.println("Ha "+ a +" homens cadastrados." );
System.out.println("");
System.out.println("Ha "+ b +" mulheres cadastrados." );
System.out.println("");
System.out.println("Ha "+ c +" Clientes com menos de 30 anos " );
}
}
public class Cadastro
{
public static void main(String[] args)
{
Pessoas[] clientes = new Pessoas[5];
for(int x = 0; x < 5 ; x++) {
int idade = Console.readInt("Digite a Idade do Cliente");
String nome = Console.readLine("Digite o Nome do Cliente");
String sexo = Console.readLine("Dige M ou F Conforme o Sexo do Clinte");
clientes[x] = new Pessoas(idae, nome, sexo);
}
Pesquisa pesquisa = new Pesquisa(clientes);
pesquisa.resultado();
}
}
Rafael