Olá pessoal , gostei mto desse site/forum, mto bom mesmo ^^ começando a voltar a frequentar, pois estou estudando java e estou gostando mto! agora sou java e php hehe! ^^
olha tem um código ae q to comentando para aula, só q tem um trecho q não entendi mto bem, gostaria q me desse uma ajuda!
media = media + notas[i][j]; // ? como q ele ta fazendo a soma disso? supondo q J tem os elementos 7 e 8
ele faz o 1º loop
e guarda media = 7
2º loop
guarda media = 7 + 8(posicao 1 da int j)?
com os comentários fica melhor? qql coisa eu tiro soh pra vcs analisarem, minha duvida eh soh na soma das notas
import java.util.Scanner; //importa a biblioteca para usar o Scanner
public class SlideQuatroEx2 //Cria a classe (pois java é OO)
{
public static void main(String []args) //Cria a main (Java é OO 2)
{
Scanner l = new Scanner(System.in); //declara o construtor Scanner
double notas[][];
/*cria um Array(vetor) bidimensional (dinamico)
1º array pra disciplina e 2º array pra notas*/
notas = new double[5][]; //declara q o primeiro array tem tamanho 5 e o outro esta null, e vai ser preenchido dinamicamente no 2º For
for(int i =0; i<notas.length; i++) //cria uma variavel i q soh tem acesso nesse for{ }, q percorre i = 0, de 0 até o tamanho do 1º array notas, ou seja percorre ateh 5
{
//depois incrementa i = 0(depois 1, 2, 3 e 4) + 1 = 1,2,3,4,5 (isso eh soh pra entender o incremento)
System.out.printf("Numero de avaliações da disciplina %d: ", i);//nr de avaliações na posicao 0 até 5, q eh o tamanho do 1º array
int n = l.nextInt(); //guarda o valor do i na posicao 0 q eh a primeira passagem do for
notas[i]= new double[n]; // posicao 0 guarda o nr de avaliações nesta posicao
/* aq ex = (0)disciplina = (2)
o Array dinamizou-se
aq esta sendo construindo a coluna da matriz
sabe-se q a linha eh tamanho 5
0 1 2 3
|0|=|n||n|
|1|=|n||n||n|
|2|=|n||n||n||n|
|3|=|n||n|
|4|=|n|n||n|
OBS: N (pois está NULL ainda, não tem nada dentro)
ex: 1º array, posição 2 [(tamanho=3), pois 0 é 1], construiu a coluna com tamanho 4(nr de avaliações)
que cabe 4 notas(veremos adiante).
*/
}//fim for
for(int i = 0; i<notas.length;i++) //laço para armazenar as notas das avaliações
{ //temos 5 disciplinas com, nr de avaliaçoes variadas, armazenada em cada posicão do array de 0 a 4
System.out.print("\nNotas da discilina " + i);//na pratica esse laço soh informa: Notas da disciplina 0,1,2,3,4 (qndo verdadeiro i<4) incrementa-se i
/*informe a(s) nota(s) das disciplinas na posicão 0 até 5
se posicao 0 tem 2 avaliaçoes, então tem 2 notas, se posicao 1 tem 3 avaliações, então tem 3 notas e assim por diante.*/
//Agora é a parte do preenchimento de elementos do 2º Array
for(int j=0; j<notas[i].length;j++) //ex: j igual a 0, se 0 < q a qtde de avaliações na posicao i, faça
{
/*dica: i tem tamanho 5(0,1,2,3,4), entretanto, informamos no 1º for q posicao 0(disciplina) tem por exemplo 2 avaliações
então, o laço do for(j), repete 2 vezes, ou seja, posição 0 = preenche 2 elementos(notas), se tem 2 avaliações tem 2 notas
ex:
1º array|0|(disciplina) = 2º array|2|(cabe 2 elementos) = nota 1, nota 2 obs:0 guarda 2 elementos e tem tamanho 2
1º array|1|(disciplina) = 2º array|3|(cabe 3 elementos) = nota 1, nota 2, nota 3
1º array|2|(disciplina) = 2º array|4|(cabe 4 elementos) = nota 1, nota 2, nota 3, nota 4 obs: 2 guarda 4 elementos e tem tamanho 4
1º array|3|(disciplina) = 2º array|2|(cabe 2 elementos) = nota 1, nota 2
1º array|4|(disciplina) = 2º array|3|(cabe 3 elementos) = nota 1, nota 2, nota 3
*/
System.out.printf("\nNota: %d\n ", j+1);
/* usando ex da posicao 0, teste de tela
Nota 1: 7
Nota 2: 8
perceba q j = 0 e no print 0 + 1 = 1 por isso: Nota 1, Nota 2
*/
notas[i][j] = l.nextDouble();
/* 1ª passada do laço
i[0], armazena j|7|
i[0], armazena j|8|
[0]=|7||8|
[1]=|n||n||n| posicao 1,2,3 e 4 ta null ainda, soh preenche no proximo loop */
}
/*o i passa a valer 1 (por causa do incremento), e assim vai até 5
* quanto i = 5 ele sai do laço, e o programa segue abaixo */
}
System.out.println("\nMédias das Ddisciplinas\n"); // pegamos a as 5 disciplinas e suas respectivas notas e agora o programa exibirá a média
[b]for(int i=0; i<notas.length;i++) //laço q percorre o 1º array, posicao 0 até 4
{
double media = 0; //criada uma variável pra receber as médias, ela é Zerada a cada laço
for(int j=0; j<notas[i].length; j++)
media = media + notas[i][j]; // ?
media = media/notas[i].length; //valor da soma media/2 (tamanho da posicao 0 é 2)
System.out.printf("Disciplina %d = %f \n", i, media);
/* teste de tela
Disciplina 0 = 7,50000
*/[/b]
} //fim for
}
}
Att
Thiago Marinho