Fiz este codigo abaixo para calcular a media da sala mas não sei se a logica esta correta…
Alguem pode dizer se está correta?
import javax.swing.JOptionPane.*;
// Programa que mostra a notas de 10 aluno e depois ele mostra a media da sala
public class Exerc_ext3
{
public static void main(String args[])
{
int i = 0;
String a;
int x,media,mediadasala;
media =0;
while(i<11)
{
a = javax.swing.JOptionPane.showInputDialog("Escreva a nota entre 0 a 10:");
x = Integer.parseInt(a);
if(x == 0)
System.out.println("Aluno"+" "+i+" "+"Reprovado");
if(x == 1)
System.out.println("Aluno"+" "+i+" "+"*");
if(x == 2)
System.out.println("Aluno"+" "+i+" "+"**");
if(x == 3)
System.out.println("Aluno"+" "+i+" "+"***");
if(x == 4)
System.out.println("Aluno"+" "+i+" "+"****");
if(x == 5)
System.out.println("Aluno"+" "+i+" "+"*****");
if(x == 6)
System.out.println("Aluno"+" "+i+" "+"******");
if(x == 7)
System.out.println("Aluno"+" "+i+" "+"*******");
if(x == 8)
System.out.println("Aluno"+" "+i+" "+"********");
if(x == 9)
System.out.println("Aluno"+" "+i+" "+"*********");
if(x == 10)
System.out.println("Aluno"+" "+i+" "+"**********");
media = media + x;
i = i + 1;
x = 0;
}
mediadasala = media / 10;
System.out.println("A media da sala foi de: "+mediadasala);
System.exit(0);
}
}
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Reifel[/color][/size] :joia:
vc pode resolver esse problema utilizando um contador de controle como no exemplo abaixo
[code]//Pacotes de extensão do Java
import javax.swing.JOptionPane;
public class NotaSala {
//o método main inicia a execução do aplicativo Java
public static void main ( String args[])
{
int total, //soma das notas digitadas pelo usuário
contador, //número de notas lidas
valorNota, //valor da nota
media; // Média de todas as notas
String nota; //nota digitada pelo usuário
// Fase de inicialização
total = 0; //limpa total
contador = 1; // prepara para executar o laço
//Fase de Processamento
while (contador <= 10) { //Executa o laço 10 vezes
//solicita a entrada do usuário e lê a nota digitada
nota = JOptionPane.showInputDialog ("Digite uma nota inteira:");
//converte o valor da nota para inteiro
valorNota = Integer.parseInt (nota);
// adiciona valorNota ao total
total = total + valorNota;
//adiciona 1 ao contador
contador = contador + 1;
// fim da estrutura while
}
// Fase de conclusão
media = total / 10; //executa uma divisão inteira
//exibe o resultado na tela para o usuário
JOptionPane.showMessageDialog (null, "A Média da sala é " + media, "Media da Sala", JOptionPane.INFORMATION_MESSAGE);
System.exit ( 0 ); //termina o programa
} // fim do método main
} // fim da classe NotaSala[/code]
Mas ele tem um contador. A variável i.
Pelo que vi o único erro foi que o contador começa com 0 e o while funciona até que ele esteja em 10 (de 0 a 10 = 11). Ou muda o contador para começar de 1 ou o while para <10.
Com relação aos if, acho mais “elegante” usar o switch nesse caso. Ou então usar if com else.
Kra, está certin, mas tenho algumas observações:
1 ) Vc jah importou o JOptionPane, vc naum precisa invocá-lo com esse código que vc usou, q faz ficar mto poluído
javax.swing.JOptionPane.showInputDialog
2 ) Vc colocou um System.exit ( 0 ) logo após mostrar o resultado, seu progrma funciona certinho, mas ele fecharia mto rápido,nem daria termpo de ver o resultado,hehe.
3 ) Use if/else ao invés de vários ifs, reduz o tempo de execução consideravelmente por não passar ( necessariamente ) em todos os ifs.
Mas a lógica do exercício está funcional.
[]'s
Ainda prefiro usar o while como o Rojas sugeriu…fica muito melhor do que com if e else ![:slight_smile: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
Bem, eu testei e tudo funcionou, mas existem maneiras mais fáceis de implementar isto que você codificou.
Como por exemplo fazer gerar os asteríscos dinamicamente e utilizar o switch ao invés do if. Isso fará você ganhar em desempenho e evitar comparações desnecessárias.