Duvida sobre exercicio em Java

20 respostas
F

Crie uma classe Aluno com os atributos nome, idade, matricula e se a matrícula está ativa
ou não. E crie uma turma com os atributos código da turma, ano, semestre,
alunos e quantidade de alunos. Inclua os alunos em uma determinada turma e apresente seus nomes, além de apresentar quantos alunos existem na turma e quantos estão com a matrícula ativa

Exemplo dos dados:

Aluno:
Joao, 30, UC2002; Maria, 29, UC2003

Turma:
codigo 1A,2016,2, array de alunos: [Aluno Joao, Aluno Maria], 2 alunos ao todo.

Exemplo de resultado:

JOAO-
matricula ativa

MARIA-
matricula inativa

2
ALUNOS AO TODO

1
ATIVO

Já consegui fazer uma parte

package exercicio3;

import java.util.Scanner;
import java.util.Arrays;

public class TurmaAlunos {
    
    public static void main(String[] args ) {
        
        Scanner input = new Scanner(System.in);
        String nome[] = new String[2];
        String matricula[] = new String[2];
        String situacao[] = new String[2];
        int idade[] = new int[2];
        
        
        
        
        System.out.println("Esta é a turma de código 1A, ano 2016, segundo semestre");
        
        for (int i=0; i<=1; i++) {
            
            
            System.out.print("Digite o nome do " +(i+1)+ "º aluno: ");
            nome[i] = input.nextLine();
            
            System.out.print("Digite a matrícula do " +(i+1)+ "º aluno: ");
            matricula[i] = input.nextLine();
            
            System.out.print("Digite a situação da matrícula do "+(i+1)+ "º aluno: ");
            situacao[i] = input.nextLine();
            
            System.out.print("Digite idade do "+(i+1)+ "º aluno: ");
            idade[i]= Integer.parseInt(input.nextLine());
            
            }
        
        input.close();
    }

}

A minha duvida é como fazer para imprimir a quantidade total de alunos do array e como mostrar quantos estão com matricula ativa?

20 Respostas

E

Você pode usar o size para ver o tamanho da lista por exemplo:

nome.size();

Mas pelo jeito que você fez ele vai ser limitado a 2.

E

E para ver quantos estão com a matricula ativar na hora de imprimir você pode fazer o um IF por exemplo.

if (situacao[i] == "ATIVA") {
   System.out.println(situacao[i]);
}
F

Eu coloquei 2 pra ficar rapido na hora de testar, depois aumento para 50 alunos.

F

Não consegui usar por esse metodo, não aparece nada na hora de imprimir na tela, só consegui pelo metodo situacao[i].equals e mesmo assim não saiu do jeito que eu queria.

E

Nesse caso cria um variável pra contar mesmo cada vez que passa no for vai resolver seu problema.

F

teria como voce postar um exemplo, sou totalmente noob em Java.

E
> package br.com.escconsultoria.standard.service.impl;
> import java.util.Scanner;
> public class TurmaAlunos {
> 	public static void main(String[] args) {
> 		Scanner input = new Scanner(System.in);
> 		String nome[] = new String[2];
> 		String matricula[] = new String[2];
> 		String situacao[] = new String[2];
> 		int idade[] = new int[2];
> 		Integer quantidadeMatriculaAtiva = 0;
> 		
> 		System.out.println("Esta é a turma de código 1A, ano 2016, segundo semestre");
> 		for (int i = 0; i <= 1; i++) {
> 			System.out.print("Digite o nome do " + (i + 1) + "º aluno: ");
> 			nome[i] = input.nextLine();
> 			System.out.print("Digite a matrícula do " + (i + 1) + "º aluno: ");
> 			matricula[i] = input.nextLine();
> 			System.out.print("Digite a situação da matrícula do " + (i + 1) + "º aluno: ");
> 			
> 			if (input.nextLine().equalsIgnoreCase("A")) {
> 				quantidadeMatriculaAtiva++;
> 			}
> 			
> 			situacao[i] = input.nextLine();
> 			System.out.print("Digite idade do " + (i + 1) + "º aluno: ");
> 			idade[i] = Integer.parseInt(input.nextLine());
> 		}
> 		input.close();
> 		
> 		System.out.println("Quantidade De Alunos: " + nome.length+1);
> 		System.out.println("Quantidade De Alunos Ativos: " + quantidadeMatriculaAtiva);
> 		
> 	}
> }

Não cheguei a testar mais deve da certo, mais ou menos como fazer.

C

Olá,

Cadê a classe Aluno ?

A classe Turma não deveria ter o main.

Você criaria uma terceira classe com o main para testar os objetos das classes Turma e Aluno.

Como está no enunciado, a classe Turma deveria ter uma lista de alunos.

F

Deu certo amigo, só tive de trocar duas coisas, onde tem: if (input.nextLine().equalsIgnoreCase(“A”)) eu coloquei if (situacao[i].equals(“Ativa”)) e no final onde voce colocou nome.length+1); eu tirei esse +1 e saiu perfeito, Valeu mesmo amigo, foi de grande ajuda.

Ainda tenho mais uma duvida, queria saber se é possivel igualar variaos tipos de string como por exemplo nessa linha ficaria if (situacao[i].equals(“Ativa”, “ATIVA”, “ativa”)), teria como fazer isso?

F

Putz é mesmo, agora que fui ver esse erro.

C

Olá,

A frase “se a matrícula está ativa ou não” obviamente significa um booleano verdadeiro ou falso: boolean isMatriculaAtiva.

F

Teria como voce postar um exemplo para ajudar?

F

Voce sempre deve separar as responsabilidades de cada objeto para pode abstrair melhor.
Quando estiver testando passa os parametros diretamente evite digitar do teclado pois é cansativo e nada produtivo
Uma suposta solução do seu problema

/**
 *
 * @author Filipe
 */
public class Aluno {
    
    private boolean statusMatricula;
    private String nome;
    private int idade;
    private String matricula;//true para ativo e false nao

    public Aluno(boolean statusMatricula, String nome, int idade, String matricula) {
        this.statusMatricula = statusMatricula;
        this.nome = nome;
        this.idade = idade;
        this.matricula = matricula;
    }

    public boolean isStatusMatricula() {
        return statusMatricula;
    }

    public void setStatusMatricula(boolean statusMatricula) {
        this.statusMatricula = statusMatricula;
    }


    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    @Override
    public String toString() {
        return "Aluno{" + "statusMatricula=" + statusMatricula + ", nome=" + nome + ", idade=" + idade + ", matricula=" + matricula + '}';
    }
    
    
}

 
import java.util.ArrayList;
import java.util.List;
 
 * @author Filipe
 */
public class Turma {

    private List<Aluno> alunos;
    private String codigo;
    private int ano;
    private int semestre;

    public Turma() {
        this.alunos = new ArrayList<>();
    }

    public Turma(String codigo, int ano, int semestre) {
        this.alunos = new ArrayList<>();
        this.codigo = codigo;
        this.ano = ano;
        this.semestre = semestre;
    }

    public void addAluno(Aluno a) {

        this.alunos.add(a);
    }

    public int getTotalAlunos() {

        return this.alunos.size();
    }

    public int getNumeroMatriculaAtiva() {
        int i = 0;
        for (Aluno aluno : alunos) {

            if (aluno.isStatusMatricula()) {
                i++;
            }
        }
        return i;
    }

    public List<Aluno> getAlunos() {
        return alunos;
    }

    @Override
    public String toString() {
        return "Turma{" + "codigo=" + codigo + ", ano=" + ano + ", semestre=" + semestre + '}';
    }
    
}

package testeguj;

import java.util.Random;
 
/**
 *
 * @author Filipe
 */
public class Testador {

    public static void main(String[] args) {

        System.out.println("Esta é a turma de código 1A, ano 2016, segundo semestre");
        Turma t1 = new Turma("1A", 2016, 2);
        Random r = new Random();
        for (int i = 0; i <= 5; i++) {
            Aluno a = new Aluno(true, "Fulano " + i, r.nextInt(28), "" + r.nextInt(9999));

            //se impar
            if (i % 2 == 1) {
                //matricula nao ativa
                a.setStatusMatricula(false);
            }
            t1.addAluno(a);

        }

        System.out.println("Alunos da turma: " + t1);
        for (Aluno aluno : t1.getAlunos()) {

            System.out.println(aluno);
        }
        System.out.println("Total de Alunos da turma:" + t1.getTotalAlunos());
        System.out.println("Alunos com matricula ativa:" + t1.getNumeroMatriculaAtiva());

    }
}
F

Valeu amigo, esse é o método correto, estava batendo tanta cabeça pra terminar esse exercício que não li direito o enunciado e e não vi que tinha de ter duas classes separadas, valeu mesmo.

F

Usei seu código e na hora de imprimir a matricula aparece como inteiro, tem como fazer para aparecer string tipo UC2016 e também como digitar cada nome individualmente?

F

Como te disse eu usei numero aleatorios, é so voce adaptar o for e usar o scanner pra ler do teclado

for (int i = 0; i <= x; i++) {

            //aqui vc le do teclado e passa pro construtor do aluno
            Aluno a = new Aluno();

            //ou se preferir use o set 

            //demais validações aqui
            t1.addAluno(a);

        }
F

Tá dando erro constructor Aluno() is undefined. Desculpe pedir ajuda novamente amigo, mas é que sou realmente noob em Java, comecei há pouco tempo e as questões que o professor está pedindo está parecendo física quântica para mim, então senão colocar exemplos bem detalhados fica dificil para entender, já comprei até o livro use a cabeça java para ajudar.

F

É so vc implementar na classe Aluno

public Aluno(){
}

Acredito que deva estudar um pouco mais.

F

Sim com certeza

F

Desisto, não consegui fazer.

Criado 11 de setembro de 2016
Ultima resposta 11 de set. de 2016
Respostas 20
Participantes 4