Vetor double

9 respostas
V

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.

9 Respostas

C

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]);
	}
		
  }
BrunoBastosPJ
//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);
}
R

Se eu entendi:

... metodoA(){
  double[] d = new double[2];
  metodoB(d);
}

... metodoB(double[]){
}

mas, algo me diz que eu não entendi...

[]'s

V
Meu codigo:
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]);
	}
}
o erro q ta dando:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at Aleatorio.Media(Aleatorio.java:24)
	at Aleatorio.main(Aleatorio.java:16)
S

O array só vai de 0 até 4.

Ao invés de usar i <= numero, use i <= nomeDoArray.length;

V

ok
aumentei o tamanho do array
mas agora a media é 0
agora qual é o erro de logica?

S

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.

V
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

S

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 é.

Criado 27 de março de 2007
Ultima resposta 28 de mar. de 2007
Respostas 9
Participantes 5