Concatenar nomes de variáveis. [RESOLVIDO]

1. Concatenar nomes de variáveis. [RESOLVIDO]

Carlos Fagiani Junior
terabytes

(usa Slackware)

Enviado em 05/09/2012 - 17:50h

Galera eu fiz um código para a facul que pegava 3 notas dos alunos e tirava a média. Coisa básica... Mas eu achei muito feio tanto código, e resolvi dificultar as coisa (pra mim mesmo), no caso eu estou fazendo para 5 alunos, e pensei na idéia de criar um "for" já que as variáveis possuem um padrão: aluno + numero.


Um trechinho do código:

//Aqui gera a média dos alunos. Pega de uma classe externa...
aluno1.calcMedia();
aluno2.calcMedia();
aluno3.calcMedia();
aluno4.calcMedia();
aluno5.calcMedia();

//Aqui um esboço do que eu queria que fosse feito
for (int i = 1; i <= 5; i++) {
System.out.println("Média do aluno" + i + ": " + aluno + i + .media);
}


Na parte da String, como de esperado sai certinho "Média do aluno1:".

Agora aqui: + aluno + i + .media <<< Isso que eu queria saber se é possivel, ou é loucura?!?!?

Essa variável 'aluno' não existe, e nem deve existir, se desse pra concatenar com a saída do 'i' iria criar a variável existente 'aluno1' 'aluno2' 'aluno3' 'aluno4' 'aluno5'. q tbm seria concatenado com o '.media'.


Se não me engano, já fiz algo parecido usando Visual Basic em um passado remoto...


Alguém sabe se isso tem como ser feito?


  


2. MELHOR RESPOSTA

Mariana Ribeiro Mendes
meldenne

(usa Linux Mint)

Enviado em 07/09/2012 - 19:03h

Na parte da String, como de esperado sai certinho "Média do aluno1:".

Agora aqui: + aluno + i + .media <<< Isso que eu queria saber se é possivel, ou é loucura?!?!?

Essa variável 'aluno' não existe, e nem deve existir, se desse pra concatenar com a saída do 'i' iria criar a variável existente 'aluno1' 'aluno2' 'aluno3' 'aluno4' 'aluno5'. q tbm seria concatenado com o '.media'.


Então, dá pra fazer isso não. Observe o seguinte:


/**Bom, aqui você disse que ele gera
*a média automática em uma
*classe externa, não é?
*Mas você não está salvando os valores,
*provavelmente o calcMedia()
*deve retornar a nota, portanto
*deveria ter uma variável recebendo.
*Eu te indico que retire essa parte.
*/


aluno1.calcMedia(); //Retirar
aluno2.calcMedia(); //Retirar
aluno3.calcMedia(); //Retirar
aluno4.calcMedia(); //Retirar
aluno5.calcMedia(); //Retirar


/**Como não são alunos específicos,
*você só vai indicá-los por um
*número, e as notas são geradas na classe externa,
*eu sugiro que você chame o calcMedia aqui mesmo.
*Olha só:
*/

for (int i = 1; i <= 5; i++) {
System.out.println("Média do aluno" + i + ": " + aluno.calcMedia());
}


Ficaria mais ou menos assim:


  public class TesteAluno {

public static void main(String[] args) {

Aluno aluno = new Aluno();

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

System.out.println("Média do aluno " + i + " : "+ aluno.calcMedia());
}
}
}


Mas lembre-se, só vai dar certo dependendo do retorno de calcMedia(). Tente colocar um int como retorno e teste aí, porque eu não compilei o código aqui.

Abraço.





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts