Sistema de pauta escolar[RESOLVIDO]

4 respostas
D

Fala Galera blz?

Seguinte to c. um probleminha aki, se alguem puder me ajudar agradeço…

Eh um sistema de pauta escolar, que recebe nomes e notas bimestrais de 3 alunos…

O objetivo é criar uma list com 3 posicoes e exibir os nomes de cada aluno de cada objeto criado…

mas quando vou imprimir, o codigo soh printa o aluno do 3º objeto… nos 3 gets nomes no final do codigo…

Será que preciso criar um objeto pra cada posição da list, ou um objeto apenas para as 3 posições?

public static void main(String[] args) throws IOException {
		
		
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	    List<Aluno> vet = new ArrayList<Aluno>();  		
	    String nome;
		float nb1;
		float nb2;
		vet.clear();
	
		
		for (int i=0; i<3; i++){
			Aluno aluno = new Aluno();//a cada iteração do laço, um objeto do tipo aluno é criado? ou não?
			int pos = 0;
			
			
			System.out.println("Insira o nome do aluno: " + i);
			nome = in.readLine();
						
			aluno.setNome(nome);
			vet.add(pos, aluno);
						
			System.out.println("Insira a nota do primeiro bimestre:");
			String texto = in.readLine();  
			nb1 = Float.parseFloat(texto);
			aluno.setNb1(nb1);
			vet.add(pos, aluno);
						
			System.out.println("Insira a nota do segundo bimestre:");
			String texto2 = in.readLine();  
			nb2 = Float.parseFloat(texto2);
			aluno.setNb2(nb2);
			vet.add(pos, aluno);
			
			pos ++;
			
			
		}
		
		System.out.println(vet.get(0).getNome());// aki soh imprime o aluno do terceiro objeto.
		System.out.println(vet.get(1).getNome());// aki soh imprime o aluno do terceiro objeto.
		System.out.println(vet.get(2).getNome());// aki soh imprime o aluno do terceiro objeto.

4 Respostas

F
public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	    List<Aluno> vet = new ArrayList<Aluno>();  		
	    String nome;
		float nb1;
		float nb2;
		vet.clear();
			for (int i=0; i<3; i++){
			Aluno aluno = new Aluno();// cada vez que o for incrementa i, voltando a fazer as instruções de dentro dele, ele instancia um aluno novo.
			System.out.println("Insira o nome do aluno: " + i);
			nome = in.readLine();
			aluno.setNome(nome);		
			System.out.println("Insira a nota do primeiro bimestre:");
			String texto = in.readLine();  
			nb1 = Float.parseFloat(texto);
			aluno.setNb1(nb1);
			System.out.println("Insira a nota do segundo bimestre:");
			String texto2 = in.readLine();  
			nb2 = Float.parseFloat(texto2);
			aluno.setNb2(nb2);
			vet.add(aluno);
			
						
			
		}
		
		System.out.println(vet.get(0).getNome());// aki soh imprime o aluno do terceiro objeto.
		System.out.println(vet.get(1).getNome());// aki soh imprime o aluno do terceiro objeto.
		System.out.println(vet.get(2).getNome());// aki soh imprime o aluno do terceiro objeto.

}

Você estava usando o método add 3 vezes, adicionando 3 vezes o mesmo aluno, é claro que assim só printaria o último, tendo em vista que vc só tem 3 posições.

Tente com seu código assim.

E alias, quando vc usa o arraylist do java, não é necessário usar um indice para adicionar na lista. Ele adiciona onde tem espaço.
Mas se quiser, é claro que pode.

pmlm

Estás a adicionar 3 vezes cada elemento… e como estás sempre a inserir na posição 0, o que vês são as 3 vezes que inseres o terceiro aluno.

Experimenta adicionar uma vez cada aluno e colocar a variável pos fora do ciclo.

D

Fala Far.ST, deu certo aki,…

po, uma coisa bem logica, mas q eu nao estava enxergando…

Kra mt obrigado!!! Ajudou bastante!!!

F

[email removido:
]Fala Far.ST, deu certo aki,…

po, uma coisa bem logica, mas q eu nao estava enxergando…

Kra mt obrigado!!! Ajudou bastante!!!

É um erro bem comum pra quem começa! ^^

Já fiz coisa do tipo.

Mas isso é só falta de atenção.

:slight_smile:
De nada, se deu certo renomeie seu tópico e coloque o tópico como [RESOLVIDO] e o restante do título.

Criado 23 de junho de 2011
Ultima resposta 23 de jun. de 2011
Respostas 4
Participantes 3