Ajuda com variável

12 respostas
J

Eu estou começando agora a programar em java e não entendo muito, porém eu to fazendo uma calculadora para a escola para calcular a média dos alunos
o problema é o seguinte eu preciso de um código para fazer o seguinte: Na calculadora existem 5 campos que podem ou não ser preenchidos com as notas dos alunos
por exemplo ele teve 5 notas ele preenche todas, teve apenas 2 ele preenche 2, então a calculadora teria que dividir os numeros digitados pelo tanto de campos preenchidos
por exemplo: O aluno digitou 3 notas, ele soma as 3 notas e divide por 3. Com o meu conhecimento eu só consegui fazer ele somar as 5 notas e dividir por 5, porém eu preciso
que divida pelo numero de campos preenchidos. Alguém pode me ajudar? Caso ajude o código ficou

nota1 = Double.parseDouble(campo1.getText()); 
nota2 = Double.parseDouble(campo2.getText());
nota3 = Double.parseDouble(campo3.getText());
nota4 = Double.parseDouble(campo4.getText());
nota5 = Double.parseDouble(campo5.getText());
result = nota1 + nota2 + nota3 + nota4 + nota5;
resulto = result / x;

onde x é 5 porém eu preciso que x seja o numero de campos preenchidos diferentes de 0.

12 Respostas

V

simples resolver o seu problema, a solução se chama “Arrays” …

no Seu caso crie um array de Double assim

double[] arrayDeDouble;

um array é uma variável que consegue armazenar n valores, no seu caso “n” representa o numero de notas que o aluno vai digitar
assim antes do aluno digitar as notas ele precisa informar quantas notas ele vai digitar

Vale lembrar que um Array em java precisa ser inicializado e você precisa informar o tamanho que ele terá, é simples faça isso

double[] arrayDeDouble = new double[3];

viu o numero 3 no declaração ?
é ele que indica o tamanho do array no caso o tamanho dele é de 3 doubles, ou seja ele pode armazenar 3 doubles diferentes

e + ou - como se você tivesse inicializado 3 variáveis so que de forma dinâmica

V

para usar o array primeiro você deve indicar qual das 3 variáveis você vai acessar, todo array começa no valor 0(zero) e termina no valor (tamanho - 1)

exp se você tem um array de tamanho igual a 3 que é o nosso caso o inicio do array é 0(zero) e o final do array é 2(dois) se você contar de zero a dois você vai ver 3 números distintos (zero, um e dois)

para acessar a primeira variável do array faça o seguinte

double[] arrayDeDouble = new double[3]; arrayDeDouble[0] = 20; arrayDeDouble[1] = 10; arrayDeDouble[2] = 30;

nesse exemplo eu atribuir o valor 20 para o primeiro espaço do array, 10 para o segundo espaço, e 30 para o terceiro espaço do array

para você recuperar o valor armazenados basta fazer a mesma coisa

System.out.println(arrayDeDouble[2]);

é importante salientar que um array não é diferente de uma variável qualquer, depois que você definiu o local que você trabalha com ele

V
Scanner scan = new Scanner(System.in);
        System.out.print("digite o numero de notas para calcular : ");
        int numeroDeNotas = scan.nextInt();
        System.out.println();
        double[] notas = new double[numeroDeNotas];
        
        for (int i = 0; i < notas.length; i++) {
            
        }

observe esse código acima ele pede para você digitar o numero de notas que irá trabalhar, qual a importância dele ?

observe a declaração do array de Double o tamanho dele é definido pelo usuário ou seja esse array pode numa execução ter o tamanho de 20 ou de 20.000 se o usuario digitar um dos dois números

a também outra coisa importante no código que é o laço “for” com ele me permite “rodar” todos as casas do array em que estou trabalhando

lembre-se iniciar o array NÃO significa que ele já virá com o valores definidos o array é só um espaço na memoria capaz de armazenar uma analogia seria
(Um ônibus pode caber 30 pessoas mas não quer dizer que ao sair da linha de produção ele terá 30 pessoas já dentro dele)
o array é a mesma coisa quando você inicia ele você acabou de “produzir” o array

você ainda deve popular o seu array com os valores digitados pelo o usuario

Vynko

Arrays não iriam “realmente” solucionar o problema dele… lol…
Você deve usar instruções de controle de fluxo e loop

Por exemplo;

Scanner scanner=new Scanner(System.in);
System.out.println("Digite um número");
int i = scanner.nextInt();
int w = 0;
int[] dung=new int[i];

for(x=0; x < i; x++){

       System.out.println("Digite o valor da "+i+"ª nota.");
       int y=scanner.nextInt();
       dung[x] = y;

       if(x>=i){
              for(int z=0; z<dung.length; z++){
                     w += dung[z];
                     if(z >= dung.length){
                            System.out.println("A soma das "+z+" notas dá "+w+", na qual a média aritmética é "+w/z);
                     }
              }
       }
}

OBS, não testei, mas provavelmente funciona.

E victor, não custava editar o primeiro post invés de fazer triple post?

V
Scanner scan = new Scanner(System.in);
        System.out.print("digite o numero de notas para calcular : ");
        int numeroDeNotas = scan.nextInt();
        System.out.println();
        double[] notas = new double[numeroDeNotas];

        for (int i = 0; i < notas.length; i++) {
            System.out.print("digite a " + (i + 1) + "º nota ");
            notas[i] = scan.nextDouble();
        }
        
        double resultado = 0;
        for (int i = 0; i < notas.length; i++) {
            resultado += notas[i];
        }
        System.out.println("a media das notas é : " + (resultado / notas.length));

esse seria o que você precisa, para resolver o seu problema

agora eu um desafio para você você conseguiria fazer a mesma coisa sem usar Array ?? (é sim possível)
vale a pena você pensar um pouco, a importância do array é que você tem os valores armazenados e pode recuperar ele, se não usar array como eu disse isso se torna impossível

V

Vynko:
Arrays não iriam “realmente” solucionar o problema dele… lol…
E victor, não custava editar o primeiro post invés de fazer triple post?

depende como eu disse no final a importância do array é a sua capacidade de recuperar os valores das notas digitadas.

rsrs “triple” desculpe foram 4 rsrs

aproposito você usou array para fazer o seu exemplo

Vynko

Por que você não para de poluir o mesmo tópico com tantas mensagens? Como eu perguntei, não custa clicar na ¢³¬£ do botão “Editar” ?
E aliás, e dai se eu usei array? Como eu disse, eles não resolvem o problema inteiro. É preciso de mais coisa do que só criar o array e mandar ele armazenar os dados.

V

tranquilo verdade, mal aew xD

J

Valeu pelas respostas pessoal! O único problema é que são todas muito complexas pro meu nível de programação (estou a dois dias estudando kkkk) e o jeito que eu usei p resolver os problemas foi baseado na ideia de criar um campo para o aluno digitar quantas notas ele tem.

nota1 = Double.parseDouble(campo1.getText()); 
nota2 = Double.parseDouble(campo2.getText());
nota3 = Double.parseDouble(campo3.getText());
nota4 = Double.parseDouble(campo4.getText());
nota5 = Double.parseDouble(campo5.getText());
x = Double.parseDouble(qntd.getText());
result = nota1 + nota2 + nota3 + nota4 + nota5;
resulto = result / x;

Nesse caso o X é definido pelo texto digitado no campo “qntd” que é onde o aluno digita quantas notas teve.

V

de uma olhada no que eu escrevi aqui no fórum

e também olhe aqui

http://www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/

qualquer dúvida volte aqui e pergunte, mas mesmo você dizendo “não está no nível” eu sei que vc consegue

diogogama

jonata97:
Valeu pelas respostas pessoal! O único problema é que são todas muito complexas pro meu nível de programação (estou a dois dias estudando kkkk) e o jeito que eu usei p resolver os problemas foi baseado na ideia de criar um campo para o aluno digitar quantas notas ele tem.

nota1 = Double.parseDouble(campo1.getText()); 
nota2 = Double.parseDouble(campo2.getText());
nota3 = Double.parseDouble(campo3.getText());
nota4 = Double.parseDouble(campo4.getText());
nota5 = Double.parseDouble(campo5.getText());
x = Double.parseDouble(qntd.getText());
result = nota1 + nota2 + nota3 + nota4 + nota5;
resulto = result / x;

Nesse caso o X é definido pelo texto digitado no campo “qntd” que é onde o aluno digita quantas notas teve.

Faz o seguinte (acho que resolverá seu problema)

int cont = 0;
double result = 0;
nota1 = Double.parseDouble(campo1.getText());
if (nota1 != 0) {
      cont = cont + 1;
      result = result + nota1;
}
nota2 = Double.parseDouble(campo2.getText());
if (nota2 != 0) {
      cont = cont + 1;
      result = result + nota2;
}
nota3 = Double.parseDouble(campo3.getText());
if (nota3 != 0) {
      cont = cont + 1;
      result = result + nota3;
}
nota4 = Double.parseDouble(campo4.getText());
if (nota4 != 0) {
      cont = cont + 1;
      result = result + nota4;
}
nota5 = Double.parseDouble(campo5.getText());
if (nota5 != 0) {
      cont = cont + 1;
      result = result + nota5;
}
x = Double.parseDouble(qntd.getText());

resulto = result / cont;

Lembrando que não é o correto, mas é o mais simples que poderá entender…

Como a galera disse anteriormente, o certo é por array, mas já dá pra vc começar a estudar…

Abraços e espero ter ajudado…

V

Tentei fazer algo bem simples aqui pra ver se ajuda!

public class Test1 { public static void main(String[] args){ double notas[] = new double[5]; //5 = Número de notas int notasValidas = 0; double resultado = 0; notas[0] = 6; //Definindo as notas notas[1] = 10; notas[2] = 0; notas[3] = 5; notas[4] = 8; for(int i = 0; i < notas.length; i++){ if(notas[i] != 0){ notasValidas++; resultado += notas[i]; } System.out.println("Nota("+i+"): " + notas[i]); } System.out.println("Soma das Notas: " + resultado); System.out.println("Número de Notas Válidas: " + notasValidas); System.out.println("Média das Notas: " + (resultado/notasValidas)); //Média excluindo as que foram 0 } }
Saída:

Nota(0): 6.0 Nota(1): 10.0 Nota(2): 0.0 Nota(3): 5.0 Nota(4): 8.0 Soma das Notas: 29.0 Número de Notas Válidas: 4 Média das Notas: 7.25

Criado 15 de julho de 2013
Ultima resposta 15 de jul. de 2013
Respostas 12
Participantes 5