Operazione Stringa

di il
9 risposte

Operazione Stringa

Buon Giorno volevo un aiuto, io ottengo dei Dati da un database con JsonObject e sono in formato stringa in pratica ho un campo del database che è ancora in lire e devo trasformarlo in euro

per capire volevo fare una prova prima trtasformando la stringa in double per poi ritrasformarla in stringa(non mi ricordo se si possono fare le operazioni direttamante sulle stringhe):
 JSONObject datum = (JSONObject) data.get(i);
                              
                                double prezzolire = (Double.parseDouble(datum.getString("costo")))/1936.24 ;
                               
                                String costo = prezzolire;
Ditemi se erro ma appunto Json trasforma tutto in stringa?Come fareste voi? questi dati a sua volta devono essere immessi in una ReciclerView .

9 Risposte

  • Re: Operazione Stringa

    Ho fatto una cosa del genere secondo voi puo essere fatto meglio?
    double prezzolire = (Double.parseDouble(datum.getString("costo")))/1936.24 ;
                                    String costo = Double.toString(prezzolire);
  • Re: Operazione Stringa

    nio74 ha scritto:


    ho fatto una cosa del genere secondo voi puo essere fatto meglio?
    double prezzolire = (Double.parseDouble(datum.getString("costo")))/1936.24 ;
                                    String costo = Double.toString(prezzolire);
    Tecnicamente è ok. Se quello non è l'unico punto, puoi incapsulare questa logica di string->double/conversione/double->string in un metodo apposito, che riceve String e restituisce String.
  • Re: Operazione Stringa

    Comunque, ad essere precisi, 1 euro vale 1936,27 lire.
  • Re: Operazione Stringa

    andbin ha scritto:


    nio74 ha scritto:


    ho fatto una cosa del genere secondo voi puo essere fatto meglio?
    double prezzolire = (Double.parseDouble(datum.getString("costo")))/1936.24 ;
                                    String costo = Double.toString(prezzolire);
    Tecnicamente è ok. Se quello non è l'unico punto, puoi incapsulare questa logica di string->double/conversione/double->string in un metodo apposito, che riceve String e restituisce String.
    Infatti farò cosi grazie
  • Re: Operazione Stringa

    candaluar ha scritto:


    Comunque, ad essere precisi, 1 euro vale 1936,27 lire.
    Grazie andavo a memoria,bei tempi la Lira
  • Re: Operazione Stringa

    nio74 ha scritto:


    Infatti farò cosi grazie
    Qualcosa tipo:
    public static String lireToEuro(String lireString) {
        double lire = Double.parseDouble(lireString);
        double euro = lire / 1936.27;
        return Double.toString(euro);
    }
    Puoi anche aggiungere logica particolare, es. se lireString è null, restituisce subito null (o lancia una eccezione ... dipende come vuoi gestire la cosa).
  • Re: Operazione Stringa

    andbin ha scritto:


    nio74 ha scritto:


    Infatti farò cosi grazie
    Qualcosa tipo:
    public static String lireToEuro(String lireString) {
        double lire = Double.parseDouble(lireString);
        double euro = lire / 1936.27;
        return Double.toString(euro);
    }
    Puoi anche aggiungere logica particolare, es. se lireString è null, restituisce subito null (o lancia una eccezione ... dipende come vuoi gestire la cosa).

    Ho seguito il tuo suggerimento e ho fatto cosi:

    Ho creato una Classe chiamata Servizi , dove andro a implementare metodi che mi potranno essere appunto di servizio,e ho implementato questo metodo:
    public static String lireToEuro(String lireString)
        {
            double lire = Double.parseDouble(lireString);
            double euro = Math.floor((lire / 1936.27)*100)/100;
            return Double.toString(euro);
        }
    Per poi usarlo in questa maniera:
    JSONArray data = response.getJSONArray("tabripa");
                                for (int i=0; i<data.length(); i++)
                                {
                                    JSONObject datum = (JSONObject) data.get(i);
                                 
                                    //Converto la stringa costo in double richiamando il metodo lireToEuro della classe Servizi
                                    String costo = new Servizi().lireToEuro(datum.getString("costo"));
                                    
                                    String codice = datum.getString("codice");
                                    Busta busta = new Busta(codice,costo);
    
                                    arrayList.add(busta);
                                }
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
    Grazie dei consigli e accetto volentieri critiche costruttive.
  • Re: Operazione Stringa

    nio74 ha scritto:


            double euro = Math.floor((lire / 1936.27)*100)/100;
    Il troncamento a 2 decimali ovviamente è ok!

    nio74 ha scritto:


    String costo = new Servizi().lireToEuro(datum.getString("costo"));
    Servizi è solo una classe con metodi di "utilità" (tipicamente static) ? Se sì, NON serve istanziarla.
    Nelle classi con solo metodi statici di utilità, tipicamente si mette il costruttore "privato", in modo che nessuno sia tentato di istanziare la classe.

    private Servizi() {}


    Quindi per usarla:
    String costo = Servizi.lireToEuro(datum.getString("costo"));
  • Re: Operazione Stringa

    andbin ha scritto:


    nio74 ha scritto:


            double euro = Math.floor((lire / 1936.27)*100)/100;
    Il troncamento a 2 decimali ovviamente è ok!

    nio74 ha scritto:


    String costo = new Servizi().lireToEuro(datum.getString("costo"));
    Servizi è solo una classe con metodi di "utilità" (tipicamente static) ? Se sì, NON serve istanziarla.
    Nelle classi con solo metodi statici di utilità, tipicamente si mette il costruttore "privato", in modo che nessuno sia tentato di istanziare la classe.

    private Servizi() {}


    Quindi per usarla:
    String costo = Servizi.lireToEuro(datum.getString("costo"));
    Grazie hai ragione gentilissimo come sempre.
Devi accedere o registrarti per scrivere nel forum
9 risposte