Autore Topic: App calcolatrice arrotondare decimali  (Letto 1607 volte)

Offline thealmighty

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7/8
App calcolatrice arrotondare decimali
« il: 13 Novembre 2013, 10:25:48 CET »
0
Buongiorno, seguendo un esercitazione sto facendo un app che dati due numeri faccia le 4 operazioni (+,-,*,/) mi sono bloccato sul fatto di arrotondare sia l'inserimento sia il risultato a 2 cifre decimali, come risolvo? nel file mainactivity.java ho usato "double.parsedouble", mentre nel file main_activity.xml negli edit text ho settato l'inputText come numberDecimal...sto sbagliando qualcosa?

un'altra cosa...se volessi inserire un bottone che azzera sia i numeri inseriti che il risultato (tipo il testo canc della calcolatrice per intenderci), come compongo la funzione java? se non sbaglio dovrei inserire dei campi vuoti negli editText di inserimento e nella textView finale tramite la funzione "set"...

grazie mille in anticipo!

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:App calcolatrice arrotondare decimali
« Risposta #1 il: 13 Novembre 2013, 10:51:08 CET »
0
Ciao io quando ho dovuto usare l'arrotondamento ho usato questa funzione

Codice (Java): [Seleziona]
public static Double roundDueDecimali(Double r){
                BigDecimal bd = new BigDecimal(r);
            bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
            return bd.doubleValue();
        }
dove il numero 2 ovviamente è il numero di cifre decimali su cui arrotondare :-)

per implementare la funzione canc basta settare il testo delle editText con la stringa vuota ovvero:

Codice (Java): [Seleziona]
editText.setText("");
in ogni caso al seguente link hai una serie di soluzione scegli pure tu quella che ti piace di più

round up to 2 decimal places in java? - Stack Overflow

Offline thealmighty

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7/8
Re:App calcolatrice arrotondare decimali
« Risposta #2 il: 13 Novembre 2013, 12:05:24 CET »
0
grazie mille...la funzione "azzera campi" completa quindi sarebbe?

private void...

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:App calcolatrice arrotondare decimali
« Risposta #3 il: 13 Novembre 2013, 12:45:15 CET »
0
eh si certo alla fine non ti serve ritornare nulla la puoi fare private void

Offline thealmighty

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7/8
Re:App calcolatrice arrotondare decimali
« Risposta #4 il: 14 Novembre 2013, 12:08:03 CET »
0
come mai questo codice mi crasha? dove sbaglio?

Codice (Java): [Seleziona]
import java.math.BigDecimal;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
       
        private EditText numero1;
        private EditText numero2;
        private TextView totale_risultato;
        private Button calcola_somma;
        private Button calcola_sottrazione;
        private Button calcola_moltiplicazione;
        private Button calcola_divisione;
        private Button azzera;
        private double num1 = 0;
        private double num2 = 0;
        private double tot_somma = 0;
        private double tot_sottrazione = 0;
        private double tot_moltiplicazione = 0;
        private double tot_divisione = 0;
       
    public static Double roundDueDecimali(Double r){
        BigDecimal bd = new BigDecimal(r);
        bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
        return bd.doubleValue();
    }
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initControls_calcola();
    }

    private void initControls_calcola() {
        numero1 = (EditText)findViewById(R.id.editText1);
        numero2 = (EditText)findViewById(R.id.editText2);
        totale_risultato = (TextView)findViewById(R.id.textView4);
        calcola_somma = (Button)findViewById(R.id.somma);
        calcola_sottrazione = (Button)findViewById(R.id.sottrazione);
        calcola_moltiplicazione = (Button)findViewById(R.id.moltiplicazione);
        calcola_divisione = (Button)findViewById(R.id.divisione);
       
        calcola_somma.setOnClickListener(new Button.OnClickListener() {
                public void onClick (View v) { somma(); }});
       
        calcola_sottrazione.setOnClickListener(new Button.OnClickListener() {
                public void onClick (View v) { sottrazione(); }});
       
        calcola_moltiplicazione.setOnClickListener(new Button.OnClickListener() {
                public void onClick (View v) { moltiplicazione(); }});
           
        calcola_divisione.setOnClickListener(new Button.OnClickListener() {
                public void onClick (View v) { divisione(); }});

        azzera.setOnClickListener(new Button.OnClickListener() {
            public void onClick (View v) { azzeramento(); }});
       
//      azzera.setOnClickListener(new Button.OnClickListener() {
//              public void onClick ((EditText)v) { azzeramento(); }});
   
    }
   

    private void somma() {
        num1=Double.parseDouble(numero1.getText().toString());
        num2=Double.parseDouble(numero2.getText().toString());
        tot_somma=roundDueDecimali(num1+num2);
        totale_risultato.setText(Double.toString(tot_somma));          
    }
   
    private void sottrazione() {
        num1=Double.parseDouble(numero1.getText().toString());
        num2=Double.parseDouble(numero2.getText().toString());
        tot_sottrazione=roundDueDecimali(num1-num2);
        totale_risultato.setText(Double.toString(tot_sottrazione ));
    }

    private void moltiplicazione() {
        num1=Double.parseDouble(numero1.getText().toString());
        num2=Double.parseDouble(numero2.getText().toString());
        tot_moltiplicazione=roundDueDecimali(num1*num2);
        totale_risultato.setText(Double.toString(tot_moltiplicazione ));        
    }
   
    private void divisione() {
        num1=Double.parseDouble(numero1.getText().toString());
        num2=Double.parseDouble(numero2.getText().toString());
        tot_divisione=roundDueDecimali(num1/num2);
        totale_risultato.setText(Double.toString(tot_divisione ));              
    }
   
    private void azzeramento() {
        numero1.setText("");
        numero2.setText("");
    }
   
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
   
}

è da rivedere la funzione azzeramento e il relativo onClick!!! :(

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:App calcolatrice arrotondare decimali
« Risposta #5 il: 14 Novembre 2013, 12:11:10 CET »
0
come mai questo codice mi crasha?

E' scritto nel LogCat. Postalo se hai difficoltà ad interpretarlo.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline thealmighty

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7/8
Re:App calcolatrice arrotondare decimali
« Risposta #6 il: 14 Novembre 2013, 12:21:24 CET »
0
Log
« Ultima modifica: 13 Dicembre 2013, 11:40:04 CET da thealmighty »

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:App calcolatrice arrotondare decimali
« Risposta #7 il: 14 Novembre 2013, 12:37:13 CET »
0
se guardi bene il logcat hai un null pointer nell'istruzione

Codice (Java): [Seleziona]
 azzera.setOnClickListener(new Button.OnClickListener() {
            public void onClick (View v) { azzeramento(); }});
       
//      azzera.setOnClickListener(new Button.OnClickListener() {
//              public void onClick ((EditText)v) { azzeramento(); }});
   
    }
   

questo perchè azzera è null ed iinfatti hai dimenticato di instanziare il bottone.


Offline thealmighty

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7/8
Re:App calcolatrice arrotondare decimali
« Risposta #8 il: 14 Novembre 2013, 15:02:48 CET »
0
dove e come lo instanzio il bottone?!

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:App calcolatrice arrotondare decimali
« Risposta #9 il: 14 Novembre 2013, 15:04:08 CET »
0
devi fare come hai fatto per gli altri bottoni

Codice (Java): [Seleziona]
azzera = (Button)findViewById(R.id.mioid);

Offline thealmighty

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7/8
Re:App calcolatrice arrotondare decimali
« Risposta #10 il: 14 Novembre 2013, 15:26:21 CET »
0
che co*****e, sono stato bloccato per ore per questa cazzata...grazie mille ;)

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:App calcolatrice arrotondare decimali
« Risposta #11 il: 14 Novembre 2013, 15:28:13 CET »
0
di nulla capita cmq poi una volta che impari a leggere il logcat scovi subito gli errori