Programação Genérica, cadastramento de alunos e ordenação!

Olá, gostaria de ajuda com um problema que estou tentando resolver
um programa que deve ser elaborado da seguinte forma usando programação genérica:
OBS: Não deve se usar Banco de Dados

[list]a)Cadastrar alunos[/list]
[list]b)Inserir media do aluno na disciplina[/list]
[list]c)Exibir Relatórios por:[/list]

1- Ordenados por nota(float)
2- Ordenados por nome(String)
3- Ordenados por matrícula(int)

pensei em começar assim:

public class Aluno {

[color=darkblue]private[/color] ArrayList [color=green]mat[/color] = new ArrayList();
[color=darkblue]private[/color] ArrayList [color=green]nome[/color] = new ArrayList();
[color=darkblue]private[/color] ArrayList [color=green]med [/color]= new ArrayList();
[color=darkblue] int[/color] x, j, escolha;

   public [b]Aluno[/b](String nome, Integer mat, Float med) {
    
       
   }
   
   public [b]Aluno[/b] () 
   
   {
        Scanner leitura = new Scanner(System.in);
      
        System.[color=green]out[/color].println([color=orange]"Digite a quantidade de alunos a seram cadastrados:"[/color]);
      x = leitura.nextInt();
     
      [b]for[/b](int i = 0; i < x; i++){
    
   System.[color=green]out[/color].println ( [color=orange]"Digite o Nome do Aluno: "[/color]);  
    String n = leitura.next();
    System.[color=green]out[/color].println([color=orange]"Digite a Matricula do aluno:"[/color]);
    Integer ma = leitura.nextInt();
    System.[color=green]out[/color].println([color=orange]"Digite a média do aluno:"[/color]);
    Float me = leitura.nextFloat();
      }
    
     
System.[color=green]out[/color].println( [color=orange]"\n1- para exibir relatórios por média \n2- para exibir relatórios por matricula \n3- para exibir relatórios por nome "[/color]);
          escolha = leitura.nextInt();
            switch(escolha) { 
                   [b] ...[/b]

}


Não sou muito bom em programação… obrigado desde já pela ajuda!

cara,

quando for postado algum codigo coloque dentro da tag [code], vc tem deve postar sua duvida ou erro.
segue um exemplo para que vc possa se basear, http://www.guj.com.br/java/253659-duvida-algoritmo

t+

Oi,

SamuelD, além de seguir o que alissonvla comentou, você precisa ser mais objetivo.
Primeiro quando li o seu tópico achei que estivesse falando de Generics, mas vi que não.

Sem problemas, li o que disse e me deu a entender que quer que façamos algo para você, é isso mesmo?
Se não for, qual o seu real problema ? Se está ocorrendo alguma exceção, poste o stacktrace para que possamos ajuda-lo.

E se não pode usar banco de dados, um arquivo, você pode usar ?
Pode trabalhar com manipulação de arquivos, simulando uma base de dados.

Abraços.

[b]Boa tarde,

minha dúvida na verdade é na estrutura do código, não estou conseguindo fazê-lo de um modo genérico!
Falei com o professor e ele disse que irá começar a nos ensinar o 19º capítulo do Deitel que fala sobre coleções
para ajudar nesse algoritmo. Em breve posto aqui o algoritmo com a ajuda do professor, para saber se estou no caminho certo.
[/b]
Obrigado pela informação alissonvla e nel! Peço desculpa pela psotagem mal feita,irei melhorar minhas postagens daqui em diante, sou novo aqui!

Você está fazendo tudo na mesma classe (errado) e também está misturando coisas.

Pelo que imagino, seu problema é bem simples e você tem uma disciplina onde estão matriculados N alunos; cada aluno tem 1 nome, 1 nota e 1 número de matrícula.
Quando for fazer um programa, sempre tente fazer um diagrama de classes. Fazendo um diagrama de classes, as coisas se resolvem. Não fique simplesmente digitando código e esperando que o Intelissense ou o AutoComplete resolvam seus problemas.

Portanto, você tem de ter uma classe “Disciplina” (essa poderia ser sua classe principal, se quiser) que contém uma coleção de "Aluno’, e cada “Aluno” tem 3 atributos: “nome”, “média” e “matrícula”. (O que chamei de “Coleção” pode ser um “ArrayList”, por exemplo).

Observação.
Não sei que mania têm os professores de usar “float”.
Deveriam ensinar só “double” desde o começo, e reservar o “float” quando fossem ensinar Java2D (que é um dos poucos lugares onde isso é usado - em particular, em meus programas só uso para isso, e mais em nenhum lugar). O “float” só serve para dar problema - a menos que o professor queira ensinar a ter dor de cabeça em vez de começar pelo caminho mais usado.

Em Java, o costume para dar nomes a atributos é pôr o nome completo, sem abreviações, a menos que o nome fique excessivamente comprido. No seu caso, é melhor usar “media” (sem acento) que “med”.

[quote=entanglement]Você está fazendo tudo na mesma classe (errado) e também está misturando coisas.

Pelo que imagino, seu problema é bem simples e você tem uma disciplina onde estão matriculados N alunos; cada aluno tem 1 nome, 1 nota e 1 número de matrícula.
Quando for fazer um programa, sempre tente fazer um diagrama de classes. Fazendo um diagrama de classes, as coisas se resolvem. Não fique simplesmente digitando código e esperando que o Intelissense ou o AutoComplete resolvam seus problemas.

Portanto, você tem de ter uma classe “Disciplina” (essa poderia ser sua classe principal, se quiser) que contém uma coleção de "Aluno’, e cada “Aluno” tem 3 atributos: “nome”, “média” e “matrícula”. (O que chamei de “Coleção” pode ser um “ArrayList”, por exemplo).

Observação.
Não sei que mania têm os professores de usar “float”.
Deveriam ensinar só “double” desde o começo, e reservar o “float” quando fossem ensinar Java2D (que é um dos poucos lugares onde isso é usado - em particular, em meus programas só uso para isso, e mais em nenhum lugar). O “float” só serve para dar problema - a menos que o professor queira ensinar a ter dor de cabeça em vez de começar pelo caminho mais usado.

Em Java, o costume para dar nomes a atributos é pôr o nome completo, sem abreviações, a menos que o nome fique excessivamente comprido. No seu caso, é melhor usar “media” (sem acento) que “med”.
[/quote]

entanglement, me bateu a curiosidade agora. Uso da sua idéia, não utilizo em meu código float mas sim double, todavia, fiquei curioso sobre este ponto:

Sobre ele dar problema, acredito que esteja relacionado a precisão dos números ?
E porque, particularmente em Java2D, utiliza-se float ao invés de double?

Grato antecipadamente.

Em Java2D o float é usado em pouquíssimos lugares. Um deles é quando se quer determinar a largura de uma linha (usando BasicStroke). A outra é quando você quer usar coordenadas como float em vez de double.

O float, pelo menos nos processadores atuais de notebooks e desktops (e agora nos processadores dos celulares mais potentes), leva exatamente o mesmo tempo para ser calculado que o double. Como trabalhar com float em vez de double requer que você saiba muito bem o que está fazendo (o que não é o caso do double, que pode ser usado até para fazer contas com dinheiro), devido à sua precisão reduzida, normalmente não deveríamos usar float em vez de double.

[quote=entanglement]Em Java2D o float é usado em pouquíssimos lugares. Um deles é quando se quer determinar a largura de uma linha (usando BasicStroke). A outra é quando você quer usar coordenadas como float em vez de double.

O float, pelo menos nos processadores atuais de notebooks e desktops (e agora nos processadores dos celulares mais potentes), leva exatamente o mesmo tempo para ser calculado que o double. Como trabalhar com float em vez de double requer que você saiba muito bem o que está fazendo (o que não é o caso do double, que pode ser usado até para fazer contas com dinheiro), devido à sua precisão reduzida, normalmente não deveríamos usar float em vez de double.
[/quote]

Perfeito. Está ligado a precisão dele mesmo.
Grato pela explicação.