Pessoal, estou com uns problemas na implantação de um exercício.
Devo criar uma aplicação para calcular a média e desvio padrão de um conjunto de medidas. Até aí tudo bem, fácil !
O problema é a forma pela qual devo fazê-lo.
Devo criar uma superclasse chamada Estatistica com os atributos int n, valor[] double e prob[] double.
Devo também criar uma classe filha chamada EstatisticaIndutiva que está ligada por herança à superrclasse. nessa classe filha deve-se fazer os cálculos necessários e a apresentação dos dados na tela.
A classe EstatisticaIndutiva de conter os seguintes atributos e métodos:
[b]
Atributos:
saida: String
media: Double
Métodos:
public EstatisticaIndutiva()
public EstatisticaIndutiva(media:double)
Calcula media: double
CalculaDesviopadrao(): double
MostraResultados(media: double, desvio:double)
Main()
[/b]
Por enquanto, para fins de testes, criei apenas a superclasse Estatistica
Essa classe será a responsável por ler esses valores, ou seja, a quantidade de dados, os valores dos dados e seus respectivos pesos.
Para isso devo criar métodos nessa superclasse que são os seguintes:
Estatistica()
CapturaNumeroDados()
CapturaDados()
Main()
Fiz essa classe apenas com o método main e funcionou tudo direito. Mas quando fui implementar da maneira que deve ser feito começa a dar erros que ainda não sei resolver. Erros do tipo “Não se pode fazer referência estática a campos não estáticos” e coisas do tipo.
Aí notei que se colocasse um método para fazer a captura dos dados resolveria esse problema declarando dentro do método os vetores valor[] e Prob[] com seus respectivos números de dados.
Mas o problema agora está na chamada do método.
Está dando o seguinte erro na linha 80:
Imposível fazer uma referência estática para o método não-estático mostraDados() do tipo Estatistica.
Quando passo o parâmetro n para o método o erro persiste.
Quando coloco a palavra [/b]static[b] na frente da declaração do método, dá problemas nas linhas 57, 59 e 60 do tipo:
[/b]Não é possível fazer uma referência estática ao campo não estático n (linha 57)
Não é possível fazer uma referência estática ao campo não estático valor (linha 59)
Não é possível fazer uma referência estática ao campo não estático Prob (linha 60)[b]
Já tentei passar o valor de n como parâmetro, mas sempre dá erros que não sei resolver.
Estou certo de que estou me embananando com os métodos. Alguém poderia dar uma ajuda aí, por favor ?
O código está logo abaixo:
package mediaEDesvio;
import javax.swing.JOptionPane;
public class Estatistica
{
// Declara as variáveis utilizadas na superclasse Estatistica:
public int n;
public double valor[];
public double Prob[];
// Método construtor implícito para a classe Estatistica
public Estatistica()
{
}
/*
Define o método capturaNumeroDados.
Captura a quantidade de elementos a serem tratados
Define os vetores valor e Prob com a quantidade de
elementos definida pelo usuário.
*/
public static int capturaNumeroDados()
{
String k = JOptionPane.showInputDialog(null, "Informe a quantidade de dados");
int n = Integer.parseInt(k);
return n;
}
/*
Define o método capturaDados
Captura os dados e os pesos de cada valor e os aloca
em seus respectivos vetores/;
*/
public static void capturaDados(int n)
{
double valor[] = new double[n];
double Prob[] = new double[n];
for(int i=0;i<n;i++)
{
String dado = JOptionPane.showInputDialog(null, "Qual o valor do dado " + (i+1));
double val = Double.parseDouble(dado);
valor[i] = val;
String peso = JOptionPane.showInputDialog(null, "Informe o peso do dado anterior");
double pes = Double.parseDouble(peso);
Prob[i] = pes;
}
}
// Método mostraDados
public static void mostraDados()
{
for(int j=0;j<n;j++)
{
System.out.println(valor[j]);
System.out.println(Prob[j]);
}
}
public static void main(String args[])
{
/*
Chama o método capturaDados e cria os vetores
com o número dos dados digitados pelo usuário.
*/
int n = capturaNumeroDados();
double valor[] = new double[n];
double Prob[] = new double[n];
/* Chama o método capturaDados passando como argumento
o valor n (número de dados)
*/
capturaDados(n);
mostraDados();
//Teste
for(int j=0;j<n;j++)
{
System.out.println(valor[j]);
System.out.println(Prob[j]);
}
}
}