android coin converter

1

I have been asked to create a currency converter and I did it, but when I give it to execute a conversion of 1 US dollar to euro I get this:

for 1 US dollar, you will receive 1 euro

Even if I try to convert 2 dollars to euro I get it

for 2 US dollars, you will receive 1 euro

I think k the problem is in the following line of code

resultado.setText(String.format("por %5.2f %s, usted recibira %5.2f %s",vCambio,mActual,result,mCambio));

but do not identify it, thank you very much

the code is this:

  package com.example.beeo.cambiomoneda;

 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
 import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

final String [] datos = {"Dolar Estadounidense","Euro","Peso Dominicano","Yuan Chino","Yen Japones"};

private Spinner monedaActualSp;
private Spinner monedaCambiarSp;
private EditText valorCambio;
private TextView resultado;

final private double FDoEu =0.87;
final private double FDoPdo =50.04;
final private double FDoYu =6.94;
final private double FDoYen =112.59;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,datos);

    monedaActualSp = (Spinner)findViewById(R.id.sp_mactual);
    monedaActualSp.setAdapter(adaptador);
}

public void convertir(View v){
    monedaActualSp = (Spinner)findViewById(R.id.sp_mactual);
    monedaCambiarSp = (Spinner)findViewById(R.id.sp_monedaCon);
    valorCambio = (EditText)findViewById(R.id.et_valorCambiar);
    resultado =(TextView)findViewById(R.id.tv_resultado);

    String mActual = monedaActualSp.getSelectedItem().toString();
    String mCambio = monedaCambiarSp.getSelectedItem().toString();

    double vCambio = Double.parseDouble(valorCambio.getText().toString());

    double result = conversion(mActual,mCambio,vCambio);

    if (result >0){
        resultado.setText(String.format("por %5.2f %s, usted recibira %5.2f %s",vCambio,mActual,result,mCambio));
        valorCambio.setText("");
    }else {
        resultado.setText(String.format("Usted recibira"));
        Toast.makeText(MainActivity.this, "Las opciones elegidas no tienen un factor de conversion",Toast.LENGTH_LONG).show();
    }
}

private double conversion(String mActual, String mCambio, double vCambio) {
    double resultadoConversion = 0;

    switch (mActual){
        case "Dolar Estadounidense":
            if (mCambio.equals("Euro")){
                resultadoConversion = vCambio * FDoEu;
            }
            if (mCambio.equals("Peso Dominicano")){
            resultadoConversion = vCambio * FDoPdo;
            }
            if (mCambio.equals("Yuan Chino")){
                resultadoConversion = vCambio * FDoYu;
            }
            if (mCambio.equals("Yen Japones")){
                resultadoConversion = vCambio * FDoYen;
            }

            break;
        case  "Euro":
            if (mCambio.equals("Dolar Estadounidense")){
                resultadoConversion = vCambio / FDoEu;
            }
            if (mCambio.equals("Peso Dominicano")){
                resultadoConversion = (vCambio * FDoPdo)/FDoEu;
            }
            if (mCambio.equals("Yuan Chino")){
                resultadoConversion = (vCambio * FDoYu)/FDoEu;
            }
            if (mCambio.equals("Yen Japones")){
                resultadoConversion = (vCambio * FDoYen)/FDoEu;
            }
            break;
        case "Peso Dominicano":
            if (mCambio.equals("Dolar Estadounidense")){
                resultadoConversion = vCambio / FDoPdo;
            }
            if (mCambio.equals("Euro")){
                resultadoConversion = (vCambio * FDoPdo)/FDoPdo;
            }
            if (mCambio.equals("Yuan Chino")){
                resultadoConversion = (vCambio * FDoYu)/FDoPdo;
            }
            if (mCambio.equals("Yen Japones")){
                resultadoConversion = (vCambio * FDoYen)/FDoPdo;
            }
            break;
        case "Yuan Chino":
            if (mCambio.equals("Dolar Estadounidense")){
                resultadoConversion = vCambio / FDoYu;
            }
            if (mCambio.equals("Euro")){
                resultadoConversion = (vCambio * FDoEu)/FDoYu;
            }
            if (mCambio.equals("Peso Dominicano")){
                resultadoConversion = (vCambio * FDoPdo)/FDoYu;
            }
            if (mCambio.equals("Yen Japones")){
                resultadoConversion = (vCambio * FDoYen)/FDoYu;
            }
            break;
        case "Yen Japones":
            if (mCambio.equals("Dolar Estadounidense")){
                resultadoConversion = vCambio / FDoYen;
            }
            if (mCambio.equals("Euro")){
                resultadoConversion = (vCambio * FDoEu)/FDoYen;
            }
            if (mCambio.equals("Peso Dominicano")){
                resultadoConversion = (vCambio * FDoPdo)/FDoYen;
            }
            if (mCambio.equals("Yuan Chino")){
                resultadoConversion = (vCambio * FDoYu)/FDoYen;
            }
            break;
    }

    return 1;
}

}

    
asked by Barly Espinal 20.11.2018 в 06:20
source

1 answer

2

Your problem is that in conversion you always return 1 with which you will never do well the passage from one currency to another.

As a conversion, it always returns 1, when doing this line

double result = conversion(mActual,mCambio,vCambio);

result will always be worth 1, which is not going to do well.

The solution would be for the conversion to return what you have calculated, it would be done like this:

private double conversion(String mActual, String mCambio, double vCambio) {
    double resultadoConversion = 0;

    switch (mActual){
        case "Dolar Estadounidense":
            if (mCambio.equals("Euro")){
                resultadoConversion = vCambio * FDoEu;
            }
            if (mCambio.equals("Peso Dominicano")){
            resultadoConversion = vCambio * FDoPdo;
            }
            if (mCambio.equals("Yuan Chino")){
                resultadoConversion = vCambio * FDoYu;
            }
            if (mCambio.equals("Yen Japones")){
                resultadoConversion = vCambio * FDoYen;
            }

            break;
        case  "Euro":
            if (mCambio.equals("Dolar Estadounidense")){
                resultadoConversion = vCambio / FDoEu;
            }
            if (mCambio.equals("Peso Dominicano")){
                resultadoConversion = (vCambio * FDoPdo)/FDoEu;
            }
            if (mCambio.equals("Yuan Chino")){
                resultadoConversion = (vCambio * FDoYu)/FDoEu;
            }
            if (mCambio.equals("Yen Japones")){
                resultadoConversion = (vCambio * FDoYen)/FDoEu;
            }
            break;
        case "Peso Dominicano":
            if (mCambio.equals("Dolar Estadounidense")){
                resultadoConversion = vCambio / FDoPdo;
            }
            if (mCambio.equals("Euro")){
                resultadoConversion = (vCambio * FDoPdo)/FDoPdo;
            }
            if (mCambio.equals("Yuan Chino")){
                resultadoConversion = (vCambio * FDoYu)/FDoPdo;
            }
            if (mCambio.equals("Yen Japones")){
                resultadoConversion = (vCambio * FDoYen)/FDoPdo;
            }
            break;
        case "Yuan Chino":
            if (mCambio.equals("Dolar Estadounidense")){
                resultadoConversion = vCambio / FDoYu;
            }
            if (mCambio.equals("Euro")){
                resultadoConversion = (vCambio * FDoEu)/FDoYu;
            }
            if (mCambio.equals("Peso Dominicano")){
                resultadoConversion = (vCambio * FDoPdo)/FDoYu;
            }
            if (mCambio.equals("Yen Japones")){
                resultadoConversion = (vCambio * FDoYen)/FDoYu;
            }
            break;
        case "Yen Japones":
            if (mCambio.equals("Dolar Estadounidense")){
                resultadoConversion = vCambio / FDoYen;
            }
            if (mCambio.equals("Euro")){
                resultadoConversion = (vCambio * FDoEu)/FDoYen;
            }
            if (mCambio.equals("Peso Dominicano")){
                resultadoConversion = (vCambio * FDoPdo)/FDoYen;
            }
            if (mCambio.equals("Yuan Chino")){
                resultadoConversion = (vCambio * FDoYu)/FDoYen;
            }
            break;
    }

    return resultadoConversion; //Devolvemos lo calculado y no 1 como antes
}

Now we return the correct value and should do the accounts well.

    
answered by 20.11.2018 в 07:52