boa tarde galera, gostaria de saber qual estrutura de repetição e mais apropriada para eu ler o nome de 5 alunos e atribuir-lhes três notas do tipo double a cada, em seguida fazer o calculo da média e por ultimo imprimir nome e media de cada aluno? e possível que haja uma interação utilizando o scanner?
Rodadas definidas: for
Rodadas indefinidas: while ou do/while
E sim é possivel interação usando Scanner, o que vc conseguiu fazer?
Quero seguir mais ou menos assim, porem quando é para repetir o laço do inicio apresenta o aluno e nota tudo junto e da erro
package lp1;
import java.util.Scanner;
public class Exercicio2 {
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
int i = 1;
do {
System.out.print("Aluno: ");
scan.nextLine();
System.out.print("nota1: ");
scan.nextDouble();
System.out.print("nota2: ");
scan.nextDouble();
System.out.print("nota3: ");
scan.nextDouble();
} while (i <= 5);
}
}
vc precisa aumentar o passo do i para que ele alcance 5…
do {
....
i = i + 1; //ou i++
} while (i <= 5);
Só assim vc consegue chegar de 1 ao 5 de 1 em 1 pegou?
Por isso volto a dizer, rodadas definidas o mais indicado é o for…
for (int i = 1; i <= 5; i++) {
System.out.print("Aluno: ");
scan.nextLine();
System.out.print("nota1: ");
scan.nextDouble();
System.out.print("nota2: ");
scan.nextDouble();
System.out.print("nota3: ");
scan.nextDouble();
}
Agora veja a diferença na prática…
Um for duplo resolve
Um loop de 5 (alunos)
Um loop de 3 (notas)
ainda continuo dando bug no juizo.
por que quando eu fiz um for de 5 posições para os nomes e outro for de 3 posições chamando as notas, mas quando foi para iniciar o loop do começo ele apresenta erro
Bem lembrado, não atentei esse detalhe
Que tipo de erro?
Outra coisa, em cada next por exemplo:
scan.nextLine();
Vc só está chamando o método sem imprimir ou guardar o resultado aí fica mais dificil saber se está no caminho certo:
System.out.print("Aluno: ");
System.out.println(scan.nextLine());
Ou
System.out.println("Aluno: " + scan.nextLine());
package lp1;
import java.util.Scanner;
public class Exercicio2 {
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
String [] aluno = new String[5];
double [] nota = new double [3];
for (int i = 0; i < 5; i++) {
System.out.print("nome: ");
aluno[i] = scan.nextLine();
for (int j = 0; j < 3; j++) {
System.out.print("nota: ");
nota[j] = scan.nextDouble();
}
}
}
}
O que esta de errado nesse código?
O que vc acha que está errado nesse código?
A meu ver não mudaria muita coisa, apenas deixaria dinamico o tamanho a ser percorrido em cada for:
for (int i = 0; i < aluno.length; i++) {
...
for (int j = 0; j < nota.length; j++) {
...
Dessa forma se vc precisar aumentar o tamanho de cada vetor, basta mudar lá em cima apenas que o for já está “adaptado”…
Agora com relação a lógica do código, vc criou um unico vetor de 3 posições para os 5 alunos e não um vetor para cada um pegou? pense a respeito…
Já pensou se não seria melhor ter uma classe Aluno com o nome e um vetor de notas?
public class Aluno {
public String nome;
public double[] notas;
}
Deixei os atributos públicos apenas para não te complicar ok? mas o correto seria ter métodos para acessá-los… vai pensando no que pode ser feito…
eu continuo querendo imprimir o nome e as 3 notas de cada aluno…como seria possível utilizando este código?
Uma prévia no código acima, uma classe Aluno pode ser sua solução…,mas usando esse código ai sem mexer muita coisa, faça as contas, quantas notas no total para os 5 alunos (5x3 da quantas notas?) um vetor de 3 posições vai atender?
obg, irei tentar dessa forma que me explicou
Leia isso:
https://www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/
Vai te ajudar bastante