Duda Retornar valor en java (solucionado)

Iniciado por JorgeEMX, 13 Noviembre 2006, 04:47 AM

0 Miembros y 1 Visitante están viendo este tema.

JorgeEMX

Hola estoy tratando de hacer un método que multiplique dos numeros complejos, pero no sé bien como devolver el resultado ya que los resultados los guardo en dos variables, una para el valor real y otra para el valor imaginario..


double multiplicar(double x, double y){
double real;
double imaginario;
real=(this.r*x)+(this.i*y*-1);
imaginario=(this.i*x)+(this.r*y);
}

p.d Notesé que no sé practicamente nada de java xD, lo hago a pura intuición  :rolleyes: ;D ;D ;D ;D

Ragnarok

Puedes hacer varias cosas, como una clase que contenga los dos valores y devolver un objeto de esa clase, puedes devolver un array con esos dos elementos, etc.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

JorgeEMX

Bueno eso sé como manejarlo, estaba pensando en devolver una cadena conviertiendo los dos valores resultantes, algo como: Valor real + Valor imaginario i ..

He mirado la clase String y creo puedo retornar un arreglo de caracteres, creo es:

String copyValueOf( char data[] );
    String copyValueOf( char data[],int offset,int count );


Una ayudadita? xD

p.d Ragnarok Podrías mencionar un poco más sobre una clase que contenga los dos valores y devolver un objeto de esa clase?

Saludos!!

Ragnarok

Puedes utilizar toString y concatenar los strings en uno separados por alguna clase de delimitador, pero la opción que planteo creo que es mejor. Un número se llama imaginario cuando tiene una parte imaginaria, podrías hacer algo así:

public class Imaginario extends Object{
  public double parte_real;
  public double parte_imaginaria;
}


Puedes definirlos como private y usar métodos set y get, pero no le veo la utilidad a complicarlo de esa forma.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

JorgeEMX

#4
Bueno lo que pasa es que el resultado de la multiplicación lo visualizaré en una ventana de dialogo de la forma que antes mencione(Valor real + Valor imaginario i )..

Citar
Puedes utilizar toString y concatenar los strings

Algún ejemplo?

Citar
pero la opción que planteo creo que es mejor
? =\

Disculpa las molestias =\ xD

Ragnarok

A ver si así:

public class Imaginario extends Object{
  public double parte_real;
  public double parte_imaginaria;
 
  public Imaginario (){
    parte_real = 0;
    parte_imaginaria = 0;
  }

  public Imaginario (double parte_real, double parte_imaginaria){
    this.parte_real = parte_real;
    this.parte_imaginaria = parte_imaginaria;
  }

}


Ante cualquier duda relee los posts anteriores.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

JorgeEMX

#6
No entiendo bien xD, si de hecho lo que has puesto es similar a la clase que estoy definiendo..

Citar
public class CComplejo{
   double r;
   double i;
   
   public CComplejo(double x, double y){
      this.r=x;
      this.i=y;
   }
   
   String ver(){
      String str=String.valueOf(this.r + this.i);
      return str;
   }

   String multiplicar(double x, double y){
      double real;
      double imaginario;
      real=(this.r*x)+((this.i*y)*-1);
      imaginario=(this.i*x)+(this.r*y);
      
       /*String copyValueOf( char data[] );
       String copyValueOf( char data[],int offset,int count );*/
      String str=String.valueOf(this.r + this.i);
      return str;
   }
}

Mi problema es no sé como retornar los valores tanto del método de la multiplicación, como del método para visualizar de la forma: Valor real + Valor imaginario i  (ejemplo: 5+4i), todo esto, al programa principal que haga uso de la clase.
Como mencione antes, intento regresar una cadena de caracteres (o de cualquier otra posible solución),que pienso yo, lo más viable seá un arreglo de caracteres..

Y este pedazo de código posiblemente seá incorrecto:

String str=String.valueOf(this.r + this.i);
return str;

Ragnarok

#7
ok, entonces lo que tienes que hacer es esto:

CComplejo multiplicar(CComplejo x){
      double real;
      double imaginario;
      real=(this.r*x.r)+((this.i*x.i)*-1);
      imaginario=(this.i*x.r)+(this.r*x.i);
      return new CComplejo (real, imaginario);
   }


Suponiendo que las cuentas estén bien hechas, no me he parado a pensarlo.

PD: La multiplicación de números complejos tiene que devolver un número complejo, "tea duck queen?"

PD2: o aun mas breve:

CComplejo multiplicar(CComplejo x){
      return new CComplejo ((r*x.r-i*x.i),(i*x.r+r*x.i));
   }


Anda que tanto jaleo para eso... XD.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

cornell

tambien podrias hacer esto:


private double[] multiplicar(double x, double y){
  double numero[] = new double[2];

  numero[0]=(this.r*x)+(this.i*y*-1);
  numero[1]=(this.i*x)+(this.r*y);
 
  return numero;
}



esooo....
Utalca

jur318

Cita de: Ragnarok en 13 Noviembre 2006, 21:43 PM
A ver si así:

public class Imaginario extends Object{
  public double parte_real;
  public double parte_imaginaria;
 
  public Imaginario (){
    parte_real = 0;
    parte_imaginaria = 0;
  }

  public Imaginario (double parte_real, double parte_imaginaria){
    this.parte_real = parte_real;
    this.parte_imaginaria = parte_imaginaria;
  }

}


Ante cualquier duda relee los posts anteriores.

xq extends object?