Ajuda com for e if

7 respostas
Cinthya_Melo

Pessoal tô tentando resolver um programa, q pede q eu entre com nome, idade e sexo de 5 pessoas.Tenho que imprimir o nome se a pessoa for do sexo masculino e tiver mais de 21 anos.
Fiz o seguinte, mas não tá dando certo! Alguém pode por favor, me ajudar :?:

import java.util.Scanner;


public class Desafio1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
Scanner input = new Scanner (System.in);
		
		String nomes [] = new String [5];
		int idade [] = new int [5];
		int sexo [] = new int [5];
		
		for (int i=1; i<=nomes.length; i++){
	
			System.out.print("Digite o nome da "+i+"ª pessoa: ");
			nomes[i]=input.next();
			System.out.print("Digite a idade da "+i+"ª pessoa: ");
			idade[i]=input.nextInt();
			System.out.print("Se for homem tecle 1, se for mulher tecle 2;tecle sua opção: ");
			sexo[i]=input.nextInt();
		}
		for (int i=1; i<=nomes.length; i++){
			if(sexo[i]==1 && idade[i]>21){
			System.out.println(nomes[i]);
		}

		}
		
		// TODO Auto-generated method stub

	}

	}

7 Respostas

Andre_Brito

Coloca seu código entre as tags code.

Em vez de next(), nextInt(), nextDouble() e afins eu uso nextLine(). Ou seja, se quero ler um int:

int qualquer = Integer.parseInt(leitor.nextLine());
String nome = Integer.parseInt(leitor.nextLIne());

Eu tive alguns problemas, por isso faço assim.

E a parte do seu for pra apresentar deve ser de 0 até a quantidade possível - 1.

Abraço.

S

Troque de:for (int i=1; i<=nomes.length; i++){

Para:for (int i=0; i<nomes.length; i++){

Assim vc ira popular a primeira posição do Array e nao ira ocorrer ArrayIndexOutOfBoundsException.

Valeu

EDIT - Era < não <=

Cinthya_Melo

Mas mesmo assim dá erro…vc rodou ele aí?
Socoooorroooo

B

Com as mudança que eles citaram, vai rodar.

Que problemas mais está dando?

Cinthya_Melo

Dá erro e não imprime o q se pede…
Deu certo, Valeu!!

peczenyj

Ok…

Em primeiro lugar, vc supoe que um array de 5 posições em java começam em 1 e vão até 5, o que não é verdade, Arrays em java são zero-based, ou seja um array de N posições vai de 0 ate N-1

for (int i=0; i<nomes.length; i++){ ... }

Outra coisa: quem é do sexo masculino e tem mais de 21 anos ?

if(sexo[i]==1 && idade[i]>=21){

Na duvida, tire o If e imprima tudo o que vc recebeu, depois va trabalhando no if ate chegar aonde vc quer

Lavieri

mesmo assim, vc podia trabalhar melhor os conceitos, ... programar assim procedural em java é algo triste...

que tal criar 1 classe pessoa ??
public class Pessoa {
   private String nome;
   private boolean masculino;
   private int idade;
   
   public Pessoa(String nome, boolean isMaculino, int idade) {
      this.nome = nome;
      this.masculino = isMasculino;
      this.idade = idade;
   }

   public boolean isMasculino() {
      return masculino;
   }
   public boolean isFeminino() {
      return !masculino;
   }
   public String getNome() {
      return nome;
   }
   public int getIdade() {
      return idade;
   }

tão mais elegante que usar arryas...

Criado 2 de fevereiro de 2009
Ultima resposta 2 de fev. de 2009
Respostas 7
Participantes 6