Repetição controlada por contador - while

4 respostas
hackum

Olá!
Poderia me explicar detalhadamente o código seguinte:

int total;
           int gradeCounter;
           int grade;
           int average;
          
           //fase de inicialização
           total = 0;
           gradeCounter = 1;
           
           //fase de processamento
          while(gradeCounter <= 10)
{
System.out.print("Enter grade:");
grade = input.nextInt();
total = total + grade;
gradeCounter = gradeCounter  +1;

}

Principalmente a fase de inicialização.

4 Respostas

davidbuzatto

Precisa identar melhor o código hein...

// declara uma variável do tipo int chamada total
int total;
// declara uma variável do tipo int chamada gradeCounter
int gradeCounter;
// declara uma variável do tipo int chamada grade
int grade;
// declara uma variável do tipo int chamada avarage
int average;

// essa inicialização se faz necessária, visto que esse código está dentro
// de um método não é? variáveis locais não recebem um valor padrão.
          
//fase de inicialização
// inicializa a variável total com o valor 0
total = 0;
// inicializa a variável gradeCounter com o valor 1
gradeCounter = 1;
           
//fase de processamento
// enquanto gradeCounter for menor ou igual a 10
while(gradeCounter <= 10) {
    // pede p/ entrar com a nota
    System.out.print("Enter grade:");
    // entra com a nota (input deve ser um Scanner, estou certo?)
    grade = input.nextInt();
    // acumula a nota fornecida em total
    total = total + grade;
    // conta mais um em gradeCounter
    gradeCounter = gradeCounter  +1;
}

// aqui deve ser calculado o valor da média 
avarage = total / (gradeCounter - 1);(avarage)

Eu inicializaria gradeCounter com 0 e iria até < 10 no while, ai no final do while vc teria gradeCounter com a quantidade correta de notas, ou seja, 10, ao contrário do que está acontecendo agora, onde gradeCounter fica com o valor 11.

[]'s

hackum

Obrigado David!
Mas veja, por que tenho que fazer esse procedimento:

gradeCounter = gradeCounter  +1;

e

total = 0;

gradeCounter = 1;
V

você pega a gradeCounter e soma ela com mais um.
ou seja.
ele é um contador.
para sair do loop.
já que while é enquanto.
então enquanto gradeCounter for menor a 10 ele vai continuar fazendo.
se vc deixar o gradeCounter = 1
ele entra em loop infinito.

o total = 0 e o gradeCounter = 1
é para inicializar o valor da variavel.
pois senão fica sem valor.
como vc vai somar
gradeCounter = gradeCounter + 1
se vc nao sabe o valor do gradeCounter inicialmente?
é impossivel.
e o mesmo para o total.

Rafael_Mesquita_Mour

hackum:
Obrigado David!
Mas veja, por que tenho que fazer esse procedimento:

gradeCounter = gradeCounter  +1;

e

total = 0;

gradeCounter = 1;  </blockquote>
gradeCounter = gradeCounter+1;

Se você não fizer isso dentro da sua estrutura de repetição, o código entrará em loop infinito…

total = 0;
gradeCounter = 1;

Aqui como o davidbuzato explicou, as variáveis dentro de um método precisam ser inicializadas, caso contrário, o código não vai compilar…

[]´s

Criado 12 de janeiro de 2011
Ultima resposta 12 de jan. de 2011
Respostas 4
Participantes 4