Codigo Feito, mas duvida

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:

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.