Come sviluppare una calcolatrice semplice con Java

October 13

Come sviluppare una calcolatrice semplice con Java


Ci sono un certo numero di modi si può andare sulla creazione di un programma di calcolatrice in Java. Questo articolo fornisce un'implementazione calcolatrice che eseguirà le operazioni quando fornito con una stringa contenente due operatori e un'operazione (ad esempio, "2 + 2"), oltre ad un semplice metodo principale per fornire una calcolatrice console. Tuttavia, questo programma può essere facilmente importato in un'applicazione basata su AWT forcellone o o qualsiasi altra applicazione in cui una dichiarazione aritmetica ha bisogno di essere interpretato da una stringa.

istruzione

1 Creare un nuovo pacchetto Java chiamato calcolatrice. Se si sceglie di fare questo con un IDE dedicato, ci sarà probabilmente una opzione per questo nel menu \ "File \". In caso contrario, basta creare una cartella da qualche parte sul disco rigido chiamato "Calcolatrice".

2 Creare la classe \ "Calculator.java \" e creare uno scheletro classe di esso. Anche in questo caso, se si utilizza un IDE, vi è probabilmente una opzione per farlo automaticamente, ma se si sceglie di utilizzare un editor di testo, è sufficiente creare un file vuoto di testo con \ ". Java \" per l'estensione del file e scrivere le seguenti dentro:

calcolatrice pacchetto
ANDARE
public class Calculator {
}

3 Dichiarare alcune variabili. Si vuole due \ "BigDecimals \" (che deve essere importato dal "java.math \" pacchetto \) per le operandi e un intero per il tipo di operazione, così come alcune costanti per rappresentare le possibili operazioni. Modificare il file in modo che appaia in questo modo:

calcolatrice pacchetto
ANDARE
importazione java.math.BigDecimal
ANDARE

public class Calculator {

BigDecimal operatorOne

ANDARE

BigDecimal operatorTwo

ANDARE

Integer operationType

ANDARE

public final static Integer ADD = 0

ANDARE

public final static Integer SUB = 1

ANDARE

public final static Integer DIV = 2

ANDARE

public final static Integer MULT = 3

ANDARE
}

4 Dichiarare metodi. Questa classe userà tre metodi. Anche se probabilmente può cavarsela con un solo, avendo molti breve, facile da comprendere metodi è meglio che avere un minor numero di metodi, più complessi. I metodi saranno chiamati "parseString booleana (String s)", "private Integer determineOperationType (String s)" e "BigDecimal performCalculation ()".

Il metodo \ "parseString \" riceverà una stringa che rappresenta un'operazione aritmetica - per esempio "2 + 2" Il \ "determineOperationType \" metodo verrà utilizzato da \ "parseString \" per interpretare la parte di funzionamento della dichiarazione . Il metodo \ "performCalculation \" fa la matematica e restituisce la risposta.

Inserire il seguente codice nella tua classe:

boolean parseString(String s) {
String[] operators = s.split(\"[ ]\")

ANDARE

try {
operatorOne = new BigDecimal(operators[0])

ANDARE

operatorTwo = new BigDecimal(operators[2])

ANDARE

operationType = determineOperationType(operators[1])

ANDARE

return true

ANDARE

} catch (NumberFormatException e) {
System.err.println(\"ERROR: Invalid operator.\")

ANDARE

return false

ANDARE

} catch (ArrayIndexOutOfBoundsException e) {
System.err.println(\"ERROR: Invalid number of arguments : \" + operators.length)

ANDARE

return false

ANDARE

}
}

private Integer determineOperationType (String s) getta NumberFormatException {
if (s.equals (\ & quot; + \ & quot;)) ADD ritorno

ANDARE

else if (s.equals(\"-\")) return SUB

ANDARE

else if (s.equals(\"/\")) return DIV

ANDARE

else if (s.equals(\"*\")) return MULT

ANDARE

else throw new NumberFormatException()

ANDARE

}

BigDecimal performCalculation () {
provare {
if (OperationType == ADD) {
tornare operatorOne.add (operatorTwo)

ANDARE

} else if (operationType == SUB) {
return operatorOne.subtract(operatorTwo)

ANDARE

} else if (operationType == MULT) {
return operatorOne.multiply(operatorTwo)

ANDARE

} else if (operationType == DIV) {
return operatorOne.divide(operatorTwo)

ANDARE

} else return new BigDecimal(0)

ANDARE

} catch (ArithmeticException e) {
System.err.println(\"Arithmetic Exception occured. Most likely this is a division by zero.\")

ANDARE

return new BigDecimal(0)

ANDARE

}
}

5 Scrivi un metodo main. Questo è un semplice programma di esempio per utilizzare la nuova classe \ "Calcolatrice \", anche se in pratica probabilmente si vuole importare la classe come parte di un altro programma più complesso. Affinché questo metodo principale per lavoro, tuttavia, è necessario aggiungere più una dichiarazione di importazione per la parte superiore della classe:

importazione java.util.Scanner
ANDARE

\ "Scanner \" è una classe convenienza progettato per rendere più facile la lettura dei dati dalla console. Aggiungere il seguente metodo principale per la classe:

public static void main(String[] args) {
Calculator c = new Calculator()

ANDARE

System.out.println(\"Enter a string to represent the calculation being performed. Place a space between each token. For example: \\\"2 + 2\\\" and not \\\"2+2\\\"\")

ANDARE

Scanner scan = new Scanner(System.in)

ANDARE

String s = scan.nextLine()

ANDARE

boolean noError = c.parseString(s)

ANDARE

if (noError) {
BigDecimal bd = c.performCalculation()

ANDARE

System.out.println(bd.toPlainString())

ANDARE

}
}

Consigli e avvertenze

  • Avrete notato che il codice precedente utilizza la \ class "BigDecimal \" per memorizzare gli operandi e non il galleggiante o doppie tipi di dati primitivi. Si scopre che le piccole imprecisioni esistono nel modo in Java gestisce float e double aritmetica. Normalmente, queste imprecisioni sono abbastanza piccoli da non importa, però nelle applicazioni in cui le piccole imprecisioni sono inaccettabili (quando si tratta di valuta o in un calcolatore, per esempio), il \ "BigDecimal \" classe dovrebbe essere usato al posto.