Ecco un esempio di come potresti creare un’applicazione Android che funga da calcolatrice in Java:
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
// Riferimenti agli elementi dell'interfaccia utente
private EditText display;
private Button button0;
private Button button1;
private Button button2;
private Button button3;
private Button button4;
private Button button5;
private Button button6;
private Button button7;
private Button button8;
private Button button9;
private Button buttonDot;
private Button buttonEqual;
private Button buttonPlus;
private Button buttonMinus;
private Button buttonMultiply;
private Button buttonDivide;
private Button buttonClear;
// Stringa che contiene il numero attualmente visualizzato
private String currentNumber = "";
// Operatore aritmetico selezionato
private char operator = ' ';
// Numero precedentemente immesso
private double previousNumber = 0;
// Flag che indica se è stato immesso un numero precedentemente
private boolean numberEntered = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Inizializza gli elementi dell'interfaccia utente
display = (EditText) findViewById(R.id.display);
button0 = (Button) findViewById(R.id.button0);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
button4 = (Button) findViewById(R.id.button4);
button5 = (Button) findViewById(R.id.button5);
button6 = (Button) findViewById(R.id.button6);
button7 = (Button) findViewById(R.id.button7);
button8 = (Button) findViewById(R.id.button8);
button9 = (Button) findViewById(R.id.button9);
buttonDot = (Button) findViewById(R.id.buttonDot);
buttonEqual = (Button) findViewById(R.id.buttonEqual);
buttonPlus = (Button) findViewById(R.id.buttonPlus);
buttonMinus = (Button) findViewById(R.id.buttonMinus);
buttonMultiply = (Button) findViewById(R.id.buttonMultiply);
buttonDivide = (Button) findViewById(R.id.buttonDivide);
buttonClear = (Button) findViewById(R.id.buttonClear);
// Imposta i listener per i pulsanti numerici
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('0');
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('1');
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('2');
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('3');
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('4');
}
});
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('5');
}
});
button6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('6');
}
});
button7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('7');
}
});
button8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('8');
}
});
button9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('9');
}
});
// Imposta il listener per il pulsante "."
buttonDot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNumberToDisplay('.');
}
});
// Imposta il listener per il pulsante "="
buttonEqual.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (operator == ' ' || currentNumber.isEmpty()) {
// Non è stato selezionato alcun operatore o non è stato immesso alcun numero
return;
}
// Esegue il calcolo e visualizza il risultato
double result = calculateResult();
display.setText(String.valueOf(result));
// Reset delle variabili
currentNumber = "";
operator = ' ';
previousNumber = 0;
numberEntered = false;
}
});
// Imposta il listener per il pulsante "+"
buttonPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (currentNumber.isEmpty()) {
// Non è stato immesso alcun numero
return;
}
if (numberEntered) {
// Esegue il calcolo utilizzando il numero precedentemente immesso
// e l'operatore selezionato
double result = calculateResult();
display.setText(String.valueOf(result));
previousNumber = result;
} else {
// Memorizza il numero attualmente visualizzato come numero precedentemente immesso
previousNumber = Double.parseDouble(currentNumber);
numberEntered = true;
}
// Memorizza l'operatore selezionato e resetta la stringa che contiene il numero attualmente visualizzato
operator = '+';
currentNumber = "";
}
});
// Imposta il listener per il pulsante "-"
buttonMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (currentNumber.isEmpty()) {
// Non è stato immesso alcun numero
return;
}
if (numberEntered) {
// Esegue il calcolo utilizzando il numero precedentemente immesso
// e l'operatore selezionato
double result = calculateResult();
display.setText(String.valueOf(result));
previousNumber = result;
} else {
// Memorizza il numero attualmente visualizzato come numero precedentemente immesso
previousNumber = Double.parseDouble(currentNumber);
numberEntered = true;
}
// Memorizza l'operatore selezionato e resetta la stringa che contiene il numero attualmente visualizzato
operator = '-';
currentNumber = "";
}
});
// Imposta il listener per il pulsante "*"
buttonMultiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (currentNumber.isEmpty()) {
// Non è stato immesso alcun numero
return;
}
if (numberEntered) {
// Esegue il calcolo utilizzando il numero precedentemente immesso
// e l'operatore selezionato
double result = calculateResult();
display.setText(String.valueOf(result));
previousNumber = result;
} else {
// Memorizza il numero attualmente visualizzato come numero precedentemente immesso
previousNumber = Double.parseDouble(currentNumber);
numberEntered = true;
}
// Memorizza l'operatore selezionato e resetta la stringa che contiene il numero attualmente visualizzato
operator = '*';
currentNumber = "";
}
});
// Imposta il listener per il pulsante "/"
buttonDivide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (currentNumber.isEmpty()) {
// Non è stato immesso alcun numero
return;
}
if (numberEntered) {
// Esegue il calcolo utilizzando il numero precedentemente immesso
// e l'operatore selezionato
double result = calculateResult();
display.setText(String.valueOf(result));
previousNumber = result;
} else {
// Memorizza il numero attualmente visualizzato come numero precedentemente immesso
previousNumber = Double.parseDouble(currentNumber);
numberEntered = true;
}
// Memorizza l'operatore selezionato e resetta la stringa che contiene il numero attualmente visualizzato
operator = '/';
currentNumber = "";
}
});
// Imposta il listener per il pulsante "C"
buttonClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Resetta tutte le variabili
currentNumber = "";
operator = ' ';
previousNumber = 0;
numberEntered = false;
// Pulisce il display
display.setText("");
}
});
}
// Aggiunge un numero al display
private void addNumberToDisplay(char number) {
currentNumber += number;
display.setText
(currentNumber);
}
// Esegue il calcolo utilizzando il numero precedentemente immesso e l'operatore selezionato
private double calculateResult() {
double result = 0;
double current = Double.parseDouble(currentNumber);
switch (operator) {
case '+':
result = previousNumber + current;
break;
case '-':
result = previousNumber - current;
break;
case '*':
result = previousNumber * current;
break;
case '/':
result = previousNumber / current;
break;
}
return result;
}
}
Spero che questo codice possa esserti utile come base per la tua applicazione Android. Ricorda che questo è solo un esempio e potresti voler aggiungere altre funzionalità o modificare il codice in base alle tue specifiche esigenze.