Problema java conversor pesetas a euros

Hola , es que estoy haciendo un ejercicio de java de pasar euros a pesetas y pesetas a euros y no me sale ... Y no consigo ver donde esta el fallo , creo que es por el if que no me lo , y que luego la lectura la hace pera no calcula .

import java.io.IOException;
import java.util.Scanner;


public class ptsaeur {
    private static String pts;
    public static void main (String []args) throws IOException{
       
        System.out.println("Bienvenido al programa para pasar de euros a pesetas  o de pesetas a euros ");
         System.out.println("si quiere pasar de pesetas a euros introduce por pantalla : pts");
         System.out.println("si quiere pasar de euros a pesetas introduce por pantalla : eur");
        Scanner sc = new Scanner(System.in);
        String cadena = sc.nextLine();
       
        if( cadena == pts )
        {
         
    System.out.print("Introduzca  pts: ");
     double pts2 = sc.nextDouble();
       
       
        double totalpts= (pts2 *1.66)/1 ;
         
        System.out.println(totalpts+"eur");
       
           
    }
        else
        {
                double eur2;
    System.out.print("Introduzca  eur: ");
    eur2 = sc.nextDouble();
       
       
        double totaleur= (pts2 *1.66)/1 ;
         
        System.out.println(totaleur+"eur");
        }
        }
       
   
}
No se de java pero donde pones para convertir pesetas a euros debería ser dividir en lugar de multiplicar ¿no?
En la segunda conversión vuelves a poner la cadena pts2 en vez de eur 2 además de que en ambas haces la misma operación en vez de la contraria.
Hace mil que no toco Java, ¿pero las cadenas no van entre comillas?

if (cadena == "pts") { [...] }


Después para pasar de pesetas a euros, tienes que dividir las pesetas entre 166. Si alguien introduce 166 pesetas, se divide por 166 y da 1€.

¿La división entre 1 para qué la haces?
Hola, te comento algunas cosas que puedes mejorar.

1) No se porque has hecho "private static String pts;" en vez de que sea una variable de la función main, de todas formas no se utiliza así que yo la quitaría.

2) Si declaras una variable dentro del if esta no es visible en el else, lo digo por el "double pts2"

3) Para comparar String usa el equals, sino estas comparando punteros

4) Creo que seria recomendable hacer un else if (cadena.equals("eur") pues si el usuario escribe algo diferente a pts no tiene por que calcular euros y añadir un else indicando al usuario que se ha equivocado

5) tanto si calculas euros o pesetas haces lo mismo.
totalpts = (pts2 * 1.66) / 1;
totaleur = (pts2 * 1.66) / 1;

Te pongo el código por si quieres mirar un poco, te recomiendo que intentes ampliar-lo para que puedas hacer otro tipo de conversión, por ejemplo dolar-yen yen-euro, etc..
Saludos.
import java.io.IOException;
import java.util.Scanner;

public class ptsaeur {


    public static void main(String[] args) throws IOException {
        double entrada, resultado;
        System.out.println("Bienvenido al programa para pasar de euros a pesetas  o de pesetas a euros ");
        System.out.println("si quiere pasar de pesetas a euros introduce por pantalla : pts");
        System.out.println("si quiere pasar de euros a pesetas introduce por pantalla : eur");
        Scanner sc = new Scanner(System.in);
        String opcion = sc.nextLine();

        if (opcion.equals("pts")) {
            System.out.print("Introduzca  pts: ");
            entrada = sc.nextDouble();
            resultado = entrada / 166;
            System.out.println(resultado + "eur");
        } else if (opcion.equals("eur")){
            System.out.print("Introduzca  eur: ");
            entrada = sc.nextDouble();
            resultado = entrada * 166;
            System.out.println(resultado + "pts");
        } else {
            System.out.println("Has elegido \"" + opcion + "\" està opción no existe");
        }
    }

}
aleix_1379 escribió:Hola, te comento algunas cosas que puedes mejorar.

1) No se porque has hecho "private static String pts;" en vez de que sea una variable de la función main, de todas formas no se utiliza así que yo la quitaría.

2) Si declaras una variable dentro del if esta no es visible en el else, lo digo por el "double pts2"

3) Para comparar String usa el equals, sino estas comparando punteros

4) Creo que seria recomendable hacer un else if (cadena.equals("eur") pues si el usuario escribe algo diferente a pts no tiene por que calcular euros y añadir un else indicando al usuario que se ha equivocado

5) tanto si calculas euros o pesetas haces lo mismo.
totalpts = (pts2 * 1.66) / 1;
totaleur = (pts2 * 1.66) / 1;

Te pongo el código por si quieres mirar un poco, te recomiendo que intentes ampliar-lo para que puedas hacer otro tipo de conversión, por ejemplo dolar-yen yen-euro, etc..
Saludos.
import java.io.IOException;
import java.util.Scanner;

public class ptsaeur {


    public static void main(String[] args) throws IOException {
        double entrada, resultado;
        System.out.println("Bienvenido al programa para pasar de euros a pesetas  o de pesetas a euros ");
        System.out.println("si quiere pasar de pesetas a euros introduce por pantalla : pts");
        System.out.println("si quiere pasar de euros a pesetas introduce por pantalla : eur");
        Scanner sc = new Scanner(System.in);
        String opcion = sc.nextLine();

        if (opcion.equals("pts")) {
            System.out.print("Introduzca  pts: ");
            entrada = sc.nextDouble();
            resultado = entrada / 166;
            System.out.println(resultado + "eur");
        } else if (opcion.equals("eur")){
            System.out.print("Introduzca  eur: ");
            entrada = sc.nextDouble();
            resultado = entrada * 166;
            System.out.println(resultado + "pts");
        } else {
            System.out.println("Has elegido \"" + opcion + "\" està opción no existe");
        }
    }

}


Hazle caso a este hombre que sabe lo que dice.

Como entiendo que el fallo entre multiplicar y dividir pesetas y euros ha sido más un lapsus que otra cosa, lo que me da más curiosidad es ese static string pts... cuál era tu idea con eso?
Recomendación cutre: utiliza print para ir viendo por donde va fallando y el valor de las variables, y el compañero te lo ha bordado
juanxugr7 escribió:Hola , es que estoy haciendo un ejercicio de java ...


Si estás a tiempo, considera cambiar a otra especialidad. La informática es una mierda hoy en día, y solo los verdaderamente brillantes o los que tiene un buen enchufe tienen alguna posibilidad. El resto va a ir derechito a engrosar las listas del paro durante mucho tiempo. Ni siquiera para marchar fuera te sirve la formación.
Deschamps escribió:
juanxugr7 escribió:Hola , es que estoy haciendo un ejercicio de java ...


Si estás a tiempo, considera cambiar a otra especialidad. La informática es una mierda hoy en día, y solo los verdaderamente brillantes o los que tiene un buen enchufe tienen alguna posibilidad. El resto va a ir derechito a engrosar las listas del paro.


¿Me puedo reír?

La informática es el sector que más crece año tras año. El problema es que la gente piensa que por haber estudiar unos años informática ya se lo van a dar todo hecho y no es así. Hay miles de cosas por estudiar y otras miles por hacer. No voy a decir que en España es fácil hacer las cosas porque mentiría, es de los peores países de la UE, pero poder, se puede.
Eso díselo a las decenas de miles procedentes de módulos que están (con suerte) de prácticas sin cobrar un duro y luego se comen los mocos. Alguno tiene la suerte de currar luego cobrando 800 euros/mes haciendo mil cosas que no le corresponden, y debe sentirse afortunado.
Muchas gracias a los que me han ayudado ,

Ahora le estoy dando vueltas , porque el ejercicio dice :

Crear la clase Moneda con los siguientes métodos:
• deEurosAPesetas: método que introduciéndole una cantidad de euros y devuelve el equivalente en pesetas.
• dePesetasAEuros: método que introduciéndole una cantidad de pesetas te devuelve el equivalente en euros.

Nota: 1 euro equivale a 166 pesetas.

Y lo hice así , pero en algo lo debo hacer mal .

import java.io.IOException;
import java.util.Scanner;


public class Moneda {
   
    public void deEurosAPesetas(){
    double euros ;
   
    double total=euros /166;

}
   public void  dePesetasAEuros(){
    double pts;
    double total2= pts*166;

}
    public static void main (String []args){
       
        System.out.println("Introduce  pts si quieres pasar de pesetas a euros ");
        System.out.println("Introduce eur si quieres pasar de euros a pesetas ");
        Scanner sc = new Scanner(System.in);
        String cadena = sc.nextLine();
       
        if(( "pts").equals(cadena) )
        {
          System.out.println("introduce el numero de pesetas");
            cambio.pts  = sc.nextDouble();
           
            double total=cambio.pts/1.66;
           
           
        }
        else if(("eur").squals(cadena))
        {
          System.out.println("introduce el numero de pesetas");
          cambio.euros =sc.nextDouble();
          double total= cambio.euros*1.66;
        }
        else
            System.out.println("has elegido una opcion que no es");
        }
    }
Te veo un poco perdido.

No te haré el ejercicio pero te diré como lo haría.

Crearía por una parte la clase Moneda y por otra una clase para el main donde importaría la calse Moneda. Ahí instancias un objeto de la clase Moneda y llamas a los métodos.

Si declaras los métodos como void, significa que no te devuelven nada, y el ejercicio te piden que te devuelvan un número, en tu caso double. Tendrías que declararlo así: public double pesetasToEuro() { return euro; }. En el método escribes la lógica para hacer la operación de cambio de divisa y con el return devuelves el valor.

Deschamps escribió:Eso díselo a las decenas de miles procedentes de módulos que están (con suerte) de prácticas sin cobrar un duro y luego se comen los mocos. Alguno tiene la suerte de currar luego cobrando 800 euros/mes haciendo mil cosas que no le corresponden, y debe sentirse afortunado.


Se llaman ciclos y no módulos. Yo vengo de uno y el 95% de la gente no sabe ni a lo que va ahí. Como te he dicho antes, programan cuatro cagadas durante 2 años que no sirven para nada y luego esperan comerse el mundo. Además, los ciclos están pensados para incorporar al alumno al mercado laboral y le intentan enseñar un oficio, pero es que con la programación y la informática en general no es tan simple.

Quien quiera encontrar trabajo, lo hará, aunque no sea al principio o tenga que empezar cobrando poco.

De todas formas, no voy a convertir este hilo en una discusión que no viene a cuento. Aquí han pedido ayuda con un problema de programación y ya está. No ha pedido ningún tipo de orientación sobre su futuro laboral.
Ya lo tengo!!!! Muchisimas gracias por la ayuda! , si hay alguna cosa que se pueda mejorar en el codigo , decirmela os lo agradeceria ya que estoy empezando .
import java.io.IOException;
import java.util.Scanner;


public class Moneda {
     double euros;
     double pts;
   
    public void deEurosAPesetas(){
   
    return euros;
}
   public void  dePesetasAEuros(){
   
     return pts;
}
    public static void main (String []args){
       
        System.out.println("Introduce  pts si quieres pasar de pesetas a euros ");
        System.out.println("Introduce eur si quieres pasar de euros a pesetas ");
        Scanner sc = new Scanner(System.in);
        String cadena = sc.nextLine();
       
        if(( "pts").equals(cadena) )
        {
           Moneda peseta = new Moneda ();
          System.out.println("introduce el numero de pesetas");
             peseta.pts  = sc.nextDouble();
           
            double total=peseta.pts/1.66;
           
            System.out.println(total+"euros");
        }
        else if(("eur").equals(cadena))
        {
            Moneda euro = new Moneda ();
          System.out.println("introduce el numero de euros");
          euro.euros =sc.nextDouble();
          double total= euro.euros*1.66;
          System.out.println(total+"pesetas");
        }
        else
            System.out.println("has elegido una opcion que no es");
        }
    }
juanxugr7 escribió:Ya lo tengo!!!! Muchisimas gracias por la ayuda! , si hay alguna cosa que se pueda mejorar en el codigo , decirmela os lo agradeceria ya que estoy empezando .
import java.io.IOException;
import java.util.Scanner;


public class Moneda {
     double euros;
     double pts;
   
    public void deEurosAPesetas(){
   
    return euros;
}
   public void  dePesetasAEuros(){
   
     return pts;
}
    public static void main (String []args){
       
        System.out.println("Introduce  pts si quieres pasar de pesetas a euros ");
        System.out.println("Introduce eur si quieres pasar de euros a pesetas ");
        Scanner sc = new Scanner(System.in);
        String cadena = sc.nextLine();
       
        if(( "pts").equals(cadena) )
        {
           Moneda peseta = new Moneda ();
          System.out.println("introduce el numero de pesetas");
             peseta.pts  = sc.nextDouble();
           
            double total=peseta.pts/1.66;
           
            System.out.println(total+"euros");
        }
        else if(("eur").equals(cadena))
        {
            Moneda euro = new Moneda ();
          System.out.println("introduce el numero de euros");
          euro.euros =sc.nextDouble();
          double total= euro.euros*1.66;
          System.out.println(total+"pesetas");
        }
        else
            System.out.println("has elegido una opcion que no es");
        }
    }


No lo has hecho bien. Has puesto la lógica para convertir el tipo de divisa dentro del main y lo tienes que hacer dentro de las funciones. Luego en el main solo tienes que llamar a la función, por ejemplo, pasándole los euros o las pesetas como parámetro.
Alecs7k escribió:
juanxugr7 escribió:Ya lo tengo!!!! Muchisimas gracias por la ayuda! , si hay alguna cosa que se pueda mejorar en el codigo , decirmela os lo agradeceria ya que estoy empezando .
import java.io.IOException;
import java.util.Scanner;


public class Moneda {
     double euros;
     double pts;
   
    public void deEurosAPesetas(){
   
    return euros;
}
   public void  dePesetasAEuros(){
   
     return pts;
}
    public static void main (String []args){
       
        System.out.println("Introduce  pts si quieres pasar de pesetas a euros ");
        System.out.println("Introduce eur si quieres pasar de euros a pesetas ");
        Scanner sc = new Scanner(System.in);
        String cadena = sc.nextLine();
       
        if(( "pts").equals(cadena) )
        {
           Moneda peseta = new Moneda ();
          System.out.println("introduce el numero de pesetas");
             peseta.pts  = sc.nextDouble();
           
            double total=peseta.pts/1.66;
           
            System.out.println(total+"euros");
        }
        else if(("eur").equals(cadena))
        {
            Moneda euro = new Moneda ();
          System.out.println("introduce el numero de euros");
          euro.euros =sc.nextDouble();
          double total= euro.euros*1.66;
          System.out.println(total+"pesetas");
        }
        else
            System.out.println("has elegido una opcion que no es");
        }
    }


No lo has hecho bien. Has puesto la lógica para convertir el tipo de divisa dentro del main y lo tienes que hacer dentro de las funciones. Luego en el main solo tienes que llamar a la función, por ejemplo, pasándole los euros o las pesetas como parámetro.


Me lo podría poner como es , es que no se como hay que hacerlo , pero es cierto que lo hice en el main .
La función por ejemplo podria ser esta:
public static double total1 (double pts  )
   {
       double total1=pts / 1.66
       
   }


Pero no se como llamar en el main a la funcion y como coger los datos de pts por teclado.
juanxugr7 escribió:Me lo podría poner como es , es que no se como hay que hacerlo , pero es cierto que lo hice en el main .
La función por ejemplo podria ser esta:
public static double total1 (double pts  )
   {
       double total1=pts / 1.66
       
   }


Pero no se como llamar en el main a la funcion y como coger los datos de pts por teclado.


Para llamar des de el main tendrías 2 variables double (importe y resultado).

System.out.println("introduce pesetas");
importe = sc.nextDouble(); // leo la información por teclado y lo guardo en la variable importe que es double
resultado = total1(importe); // Llamo a la función y le paso el importe que he leído y la función devuelve el valor en pts o en euros dependiendo de cual sea el caso
System.out.println(resultado); // Muestro el resultado


Y la función tiene que devolver el resultado
public static double ptsToEuro (double pts) {
    return pts / 166;
}

Aunque obviamente puedes devolver una variable del mismo tipo que lo que vas a retornar, por si tuvieras que hacer varias operaciones
public static double ptsToEuro (double pts) {
    double euros;
    euros = pts / 166;
    return euros;
}


También te recomiendo usar nombres que sean mas claros para los métodos y variables, por ejemplo en vez de total1 pues eurosPorPesetas

Espero que estos comentarios no te los tomes mal y te puedan servir de ayuda, saludos.
Deschamps escribió:
juanxugr7 escribió:Hola , es que estoy haciendo un ejercicio de java ...


Si estás a tiempo, considera cambiar a otra especialidad. La informática es una mierda hoy en día, y solo los verdaderamente brillantes o los que tiene un buen enchufe tienen alguna posibilidad. El resto va a ir derechito a engrosar las listas del paro durante mucho tiempo. Ni siquiera para marchar fuera te sirve la formación.


Pues yo estoy en Suiza y la informática se valora mucho y de hecho hay mucha demanda.
A ver ésto son fallos simples.

Utiliza breakpoints y ejecuta en modo debug, que para eso está.
Cuando trabajes vas a tener que aprender a descubrir la mayoría de fallos tú solo, es bueno aprender a detectar el orígen de éstos.
wenasss

una cosa, 1€=166,386ptas

1000€=166386ptas
si no pones los decimales...
1000€=166000ptas
xecollons escribió:
aleix_1379 escribió:Hola, te comento algunas cosas que puedes mejorar.

1) No se porque has hecho "private static String pts;" en vez de que sea una variable de la función main, de todas formas no se utiliza así que yo la quitaría.

2) Si declaras una variable dentro del if esta no es visible en el else, lo digo por el "double pts2"

3) Para comparar String usa el equals, sino estas comparando punteros

4) Creo que seria recomendable hacer un else if (cadena.equals("eur") pues si el usuario escribe algo diferente a pts no tiene por que calcular euros y añadir un else indicando al usuario que se ha equivocado

5) tanto si calculas euros o pesetas haces lo mismo.
totalpts = (pts2 * 1.66) / 1;
totaleur = (pts2 * 1.66) / 1;

Te pongo el código por si quieres mirar un poco, te recomiendo que intentes ampliar-lo para que puedas hacer otro tipo de conversión, por ejemplo dolar-yen yen-euro, etc..
Saludos.
import java.io.IOException;
import java.util.Scanner;

public class ptsaeur {


    public static void main(String[] args) throws IOException {
        double entrada, resultado;
        System.out.println("Bienvenido al programa para pasar de euros a pesetas  o de pesetas a euros ");
        System.out.println("si quiere pasar de pesetas a euros introduce por pantalla : pts");
        System.out.println("si quiere pasar de euros a pesetas introduce por pantalla : eur");
        Scanner sc = new Scanner(System.in);
        String opcion = sc.nextLine();

        if (opcion.equals("pts")) {
            System.out.print("Introduzca  pts: ");
            entrada = sc.nextDouble();
            resultado = entrada / 166;
            System.out.println(resultado + "eur");
        } else if (opcion.equals("eur")){
            System.out.print("Introduzca  eur: ");
            entrada = sc.nextDouble();
            resultado = entrada * 166;
            System.out.println(resultado + "pts");
        } else {
            System.out.println("Has elegido \"" + opcion + "\" està opción no existe");
        }
    }

}


Hazle caso a este hombre que sabe lo que dice.

Como entiendo que el fallo entre multiplicar y dividir pesetas y euros ha sido más un lapsus que otra cosa, lo que me da más curiosidad es ese static string pts... cuál era tu idea con eso?


Sabe bastante. Sólo un detalle. Acostúmbrate a comparar los strings al revés para evitar las NullPointerExceptions:

"pts".equals(opcion)


QuiNtaN escribió:
Deschamps escribió:
juanxugr7 escribió:Hola , es que estoy haciendo un ejercicio de java ...


Si estás a tiempo, considera cambiar a otra especialidad. La informática es una mierda hoy en día, y solo los verdaderamente brillantes o los que tiene un buen enchufe tienen alguna posibilidad. El resto va a ir derechito a engrosar las listas del paro durante mucho tiempo. Ni siquiera para marchar fuera te sirve la formación.


Pues yo estoy en Suiza y la informática se valora mucho y de hecho hay mucha demanda.


En mi curro hay un montón de inútiles, y nadie se escandaliza. De hecho, hay bastante demanda de inútiles en el mercado español. Y fuera es más de lo mismo. Eso si, en el extranjero hay carreras horizontales que aquí no hay.
19 respuestas