Oi sou iniciante em java e gostaria de saber se alguém poderia me ajudar a carregar um vetor double em um método e usar em outro, passar como parâmetro, utilizando outro método.
Vetor double
9 Respostas
Você tentou fazer?
public static void main(String args[]) {
double[] vetor = new double[10];
carregarVetor(vetor);
lerVetor(vetor);
}
static double[] carregarVetor(double[] vetor) {
double[] novoVetor = new double[vetor.length];
for (int i = 0; i < vetor.length; i++)
{
vetor[i] = Math.random();
}
return novoVetor;
}
static void lerVetor(double[] vetor) {
for (int i = 0; i < vetor.length; i++)
{
System.out.println(vetor[i]);
}
}
//declaração da classe
public static void meuMetodo(double[] vetorDouble) {
//use o vetor aqui
}
public static void main(String[] args) {
double[] d = new double[2];
d[0] = 1.3;
d[1] = 3.5;
meuMetodo(d);
}
Se eu entendi:
... metodoA(){
double[] d = new double[2];
metodoB(d);
}
... metodoB(double[]){
}
mas, algo me diz que eu não entendi...
[]'s
public class Aleatorio {
public double []numeros= new double[5];
int i=0;
public double[] Alea(int high, int low){
for (i=0;i<5;i++)
numeros[i]=(double)(Math.random() * (low-high ))+ high;
return numeros;
}
public static void main( String agrs[]){
Aleatorio e = new Aleatorio();
e.Media();
}
public void Media(){
double media=0;
for(i=0;i<=5;i++)
{
media+=numeros[i]/5;// ta dando erro nessa linha
}
for(i=0;i<5;i++)
System.out.println(numeros [i]);
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Aleatorio.Media(Aleatorio.java:24)
at Aleatorio.main(Aleatorio.java:16)
O array só vai de 0 até 4.
Ao invés de usar i <= numero, use i <= nomeDoArray.length;
ok
aumentei o tamanho do array
mas agora a media é 0
agora qual é o erro de logica?
Não era pra aumentar o tamanho, era pra acessar dentro da faixa.
Como você viu que a média deu zero? Não tem nenhuma linha aí que imprima a média.
Posta o novo código.
public class Aleatorio {
public double []numeros= new double[6];
int i=0;
float desPd=0,media=0;
public double[] Alea(int high, int low){
for (i=0;i<5;i++)
numeros[i]=(int)(Math.random() * (low-high ))+ high;
for(i=0;i<5;i++)
System.out.println(numeros [i]);
return numeros;
}
public static void main( String agrs[]){
Aleatorio a = new Aleatorio();
a.Calcula();
}
public void Calcula(){
Alea(20, 46);
Media();
Mediana();
Amplitude();
DesvioPadrao();
distribuicaoNormal();
distribuicaoExponencial();
}
public void Media(){
for(i=0;i<=5;i++)
{
media+=numeros[i]/5;
}
System.out.println("A media é: "+media);
}
public void Amplitude(){
int i;
double menor,maior;
menor = numeros[0];
maior = numeros[0];
for(i=0;i<5;i++){
if(menor>numeros[i])
menor=numeros[i];}
for(i=0;i < numeros.length;i++){
if(maior<numeros[i])
maior=numeros[i];}
System.out.println("A amplitude é: "+(maior-menor));
}
public void Mediana(){
double mediana;
mediana = numeros[(i/2-1)];
System.out.println("A mediana é: "+mediana);
}}
fiz umas alterações e ficou assim
agora ta funcionando
Não pode estar funcionando bem, pois ora você acessa até a posição 5, ora até a posição 4.
Como te falei, coloque numeros.length (em todos) ao invés do número literal. Não faz sentido colocar um número que pode mudar a qualquer hora, exigindo que você saia “caçando” aquele número pelo código.
Fora que você talvez nem tenha como saber que número é.