Calculadora bsica para novatos sin interfaz :D
Elaborando una calculadora donde ingresaremos dos numero y realizara las
operaciones de sumar,restas ,multiplicar y dividir.
import [Link].*;
public class Menu {
public static void main(String []agrs)
{
int op=0;
double n1,n2,s,m,d,r;
do{
op=[Link]([Link]("nCalculadoran"+
"************n"+
"[1] SUMARn"+
"[2] RESTARn"+
"[3] MULTIPLICARn"+
"[4] DIVIDIRn"+
"[5] SALIRn"+
"Ingresa una opcion:"));
switch(op)
{
case 1:
n1=[Link]([Link]("Ingrese
numero 1"));
n2=[Link]([Link]("Ingrese
numero 2"));
s=n1+n2;
[Link](null,"La suma es:"+s);
break;
case 2:
n1=[Link]([Link]("Ingrese
numero 1"));
n2=[Link]([Link]("Ingrese
numero 2"));
r=n1-n2;
[Link](null,"La resta es:"+r);
break;
case 3:
n1=[Link]([Link]("Ingrese
numero 1"));
n2=[Link]([Link]("Ingrese
numero 2"));
m=n1*n2;
[Link](null,"La multiplicacion es:"+m);
break;
case 4:
n1=[Link]([Link]("Ingrese
numero 1"));
n2=[Link]([Link]("Ingrese
numero 2"));
d=n1/n2;
[Link](null,"La division es:"+d);
break;
}
}while(op!=5);
}
Calculadora con Interfaz en Java
Anteriormente he compartido un ejemplo de una calculadora bsica usando los cuadros
de dialogo en java, la cual es un poco tediosa al momento de realizar las
operaciones, pero en post mostrare algo mas grafico, usando lo que se ha explicado
en las anteriores entradas: Crear ventanas, Botones, Formularios bsicos, JPaneles
y arreglos de botones.
El proyecto esta dividido en dos partes, una el cual contiene el mtodo principal,
y la otra clase contiene la interfaz, eventos y operaciones realizadas por el
ejercicio practico. El programilla realiza las cuatro operaciones bsicas de las
matemticas (suma, resta, multiplicacin y divisin), ademas cuenta con el uso de
memorias, borrado total (pantalla y memoria) raz cuadrada, y manejo de decimales.
Bueno ya sabiendo que realiza el ejercicio, continuare mostrando el cdigo para la
aplicacin.
- CLASE MAIN
import [Link];
import [Link];
import [Link];
import [Link];
public class CalculadoraGUI {
public static void main(String[] args) {
String ax = [Link]("[Link]"); //variable que toma el nombre
del sistema operativo que se tenga instalado
if([Link]("Windows 7") || [Link]("Windows")){//si es un sistema
windows se aplica el skin que tiene java para windows
try {
[Link]("[Link]");
interfaz w = new interfaz();
// TODO code application logic here
} catch (ClassNotFoundException ex) {
[Link]([Link]()).log([Link], null,
ex);
} catch (InstantiationException ex) {
[Link]([Link]()).log([Link], null,
ex);
} catch (IllegalAccessException ex) {
[Link]([Link]()).log([Link], null,
ex);
} catch (UnsupportedLookAndFeelException ex) {
[Link]([Link]()).log([Link], null,
ex);
}
}
if([Link]("Linux")){//si es un sistema linux se aplica el skin que tiene
java para linux
try {
[Link]("[Link]");
interfaz w = new interfaz();
// TODO code application logic here
} catch (ClassNotFoundException ex) {
[Link]([Link]()).log([Link], null,
ex);
} catch (InstantiationException ex) {
[Link]([Link]()).log([Link], null,
ex);
} catch (IllegalAccessException ex) {
[Link]([Link]()).log([Link], null,
ex);
} catch (UnsupportedLookAndFeelException ex) {
[Link]([Link]()).log([Link], null,
ex);
}
}
}
}
- CLASE INTERFAZ
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class interfaz implements ActionListener{
JTextField jt1, jt2;
Panel pN, pb1, pb3;
JPanel pS, pb2;
JButton mc, mr, ms, mMas, mMenos, numeros[], operaciones[];
String oper[]={"R", "C", "+", "/", "-" ,"*", "="}, ax="";
float n1, n2, nr, M;//variables para las operaciones
int tipOp; //para controlar el tipo de operacion que se realiza
boolean t=false;//control sobre escribir un nuevo numero despues de alguna
operacion cambia a true cuando se ha realizado una operacion
public interfaz(){
JFrame jfMain = new JFrame("Calculator");
[Link](new BorderLayout(4, 4));
norte();
sur();
[Link](pN, [Link]);
[Link](pS, [Link]);
[Link](100, 80);
[Link](false);
[Link](true);
[Link](300, 380);
[Link](JFrame.EXIT_ON_CLOSE);
}
public void norte(){
pN = new Panel(null);
jt1 = new JTextField("");
jt2 = new JTextField("0");
[Link]([Link]);
[Link]([Link]);
//Quitar bordes a los campos de texto
[Link]([Link]([Link]));
[Link]([Link]([Link]));
//desabilitando los campos de texto
[Link](false);
[Link](false);
[Link]([Link]);
[Link]([Link]);
[Link](jt1); [Link](jt2);
[Link](35, 10, 200, 15);
[Link](35, 25, 200, 30);
[Link](270, 47);
[Link](true);
public void sur(){
pS = new JPanel(new BorderLayout(6, 50));
[Link](new BorderLayout(4, 4));
botMem();
botNum();
botOpe();
[Link](pb1, [Link]);
[Link](pb2, [Link]);
[Link](pb3, [Link]);
[Link](270, 330);
}
public void botMem(){
pb1 = new Panel(null);
mc = new JButton("MC"); mr = new JButton("MR");
ms = new JButton("MS"); mMas = new JButton("M+");
mMenos = new JButton("M-");
[Link](new Font("Arial", [Link], 11));
[Link](new Font("Arial", [Link], 11));
[Link](new Font("Arial", [Link], 11));
[Link](new Font("Arial", [Link], 11));
[Link](new Font("Arial", [Link], 11));
[Link](new Insets(1, 1, 1, 1)); [Link](new Insets(1, 1, 1, 1));
[Link](new Insets(1, 1, 1, 1)); [Link](new Insets(1, 1, 1,
1));
[Link](new Insets(1, 1, 1, 1));
[Link](35, 0, 33, 33); [Link](78, 0, 33, 33); [Link](121,
0, 33, 33);
[Link](164, 0, 33, 33); [Link](207, 0, 33, 33);
[Link](mc); [Link](mr); [Link](ms); [Link](mMas); [Link](mMenos);
[Link](this); [Link](this);
[Link](this);
[Link](this); [Link](this);
[Link](270, 45);
[Link](true);
}
public void botNum(){
pb2 = new JPanel(null);
int nx3=121, nx2=121, nx1=121, n3y=0, n2y=43, n1y=86;
numeros = new JButton[11];
//*****************************************
//bloque para crear los botones, aadirlos y asignar numeros
for (int i=0; i<=10; i++){
if(i<=9){
numeros[i] = new JButton(""+i);
[Link](numeros[i]);
numeros[i].setMargin(new Insets(1, 1, 1, 1));
numeros[i].addActionListener(this);
}
else{
numeros[i] = new JButton(".");
[Link](numeros[i]);
numeros[i].setMargin(new Insets(1, 1, 1, 1));
numeros[i].addActionListener(this);
}
}
//******************************************
//bloque para posicionar botones
for(int i=10; i>=0; i--){
if(i==10){
numeros[i].setBounds(121, 129, 35, 35);
}
else{
if(i<=9 && i>=7){
numeros[i].setBounds(nx3, n3y, 35, 35);
nx3-=43;
}
else if(i<=6 && i>=4){
n3y+=43;
numeros[i].setBounds(nx2, n2y, 35, 35);
nx2-=43;
}
else if(i<=3 && i>=1){
n3y+=43;
numeros[i].setBounds(nx1, n1y, 35, 35);
nx1-=43;
}
else if(i==0){
numeros[i].setBounds(35, 129, 78, 35);
}
}
}
[Link](170, 150);
[Link](true);
}
public void botOpe(){
pb3 = new Panel(null);
int c=0, x=0, y=0;
operaciones = new JButton[7];
for(int i=0; i<=6; i++){
if(c<=1){
operaciones[i] = new JButton(oper[i]);
[Link](operaciones[i]);
operaciones[i].setBounds(x, y, 30, 35);
operaciones[i].setMargin(new Insets(1, 1, 1, 1));
operaciones[i].addActionListener(this);
x+=33;
c++;
}
else{
if(i==6){
x=0; y+=43;
operaciones[i] = new JButton(oper[i]);
[Link](operaciones[i]);
operaciones[i].setBounds(x, y, 65, 35);
operaciones[i].setMargin(new Insets(1, 1, 1, 1));
operaciones[i].addActionListener(this);
x+=33;
c++;
}
else{
c=0;
x=0; y+=43;
operaciones[i] = new JButton(oper[i]);
[Link](operaciones[i]);
operaciones[i].setBounds(x, y, 30, 35);
operaciones[i].setMargin(new Insets(1, 1, 1, 1));
operaciones[i].addActionListener(this);
x+=33;
c++;
}
}
[Link](true);
[Link](120, 200);
}
public boolean isN(String ax){
try{
int n = [Link](ax);
return true;
}catch(NumberFormatException e){
return false;
}
@Override
public void actionPerformed(ActionEvent e) {
String op="";
if(isN([Link]())){ //cuando se oprimen numeros
if([Link]().equals("")){
ax += [Link]();
[Link](ax);
}
else{
if(tipOp==0){
if(t){
ax="";
[Link]([Link]());
ax += [Link]();
[Link](ax);
t = false;
}
else{
ax="";
ax += [Link]()+[Link]();
[Link](ax);
}
}else{
ax="";
ax += [Link]()+[Link]();
[Link](ax);
}
}
}
else{//cuando se oprime el resto de botones
if([Link]().equals("R") ){
[Link]("");
Float a = [Link]([Link]());
[Link](""+[Link](a));
}
if([Link]().equals("C") ){ //para reiniciar valores y
limpiar pantalla
tipOp=0; n1 = 0; n2 =0; nr=0; [Link](""); [Link]("0");
ax="";
}
if([Link]().equals("MC")){//para limpiar la memoria de la
calculadora
[Link]([Link]);
[Link](""); [Link]("0");
M=0;
}
if([Link]().equals("MR")){//para mostrar valor almacenado
en la memoria
[Link]("");
[Link]([Link](M));
}if([Link]().equals("MS")){//guardar un valor en la memoria
[Link]([Link]);
M = [Link]([Link]());
}
if([Link]().equals("M+")){//sumar valor de la pantalla con
el valor de la memoria
M += [Link]([Link]());
}
if([Link]().equals("M-")){//restar valor de la pantalla con
el valor de la memoria
M -= [Link]([Link]());
}
if([Link]().equals(".")){//usar el punto para los decimales
ax="";
if(numeros[10].isEnabled()){
numeros[10].setEnabled(false);
ax = [Link]() +".";
[Link](ax);
}
}
if([Link]().equals("+") ){//boton suma
numeros[10].setEnabled(true);
ax="";
if(tipOp==1){
}else if(tipOp==0 ){//validacion para no chocar con otras
operaciones
if([Link]().equals("") ){
n1 = [Link]([Link]());
ax += [Link]()+[Link]();
[Link](ax+" + ");
[Link]("");
tipOp = 1;
}
else {
if(!t){//validacion para nueva operacion
n1 = [Link]([Link]());
ax += [Link]();
[Link](ax+" + ");
[Link]("");
tipOp = 1;
}
else{//usar otras operaciones con la suma
n1 = [Link]([Link]());
ax += [Link]();
[Link](ax+" + ");
[Link]("");
tipOp = 1;
}
}
}
}
if([Link]().equals("-") ){//cuando se decide restar
numeros[10].setEnabled(true);
ax="";
if(tipOp==2){
}else if(tipOp==0){//validacion para no chocar con otras
operaciones
if([Link]().equals("")){
n1 = [Link]([Link]());
ax += [Link]()+ [Link]();
[Link](ax+" - ");
[Link]("");
tipOp = 2;
}
else{
if(!t){//validacion para nueva operacion
n1 = [Link]([Link]());
ax += [Link]();
[Link](ax+" - ");
[Link]("");
tipOp = 2;
}
else{//usar otras operaciones con la suma
n1 = [Link]([Link]());
ax += [Link]();
[Link](ax+" - ");
[Link]("");
tipOp = 2;
}
}
}
}
if([Link]().equals("*") ){//cuando se decide
multiplicar
numeros[10].setEnabled(true);
ax="";
if(tipOp==3){
}else if(tipOp==0){//validacion para no chocar con otras
operaciones
if([Link]().equals("")){
n1 = [Link]([Link]());
ax += [Link]()+[Link]();
[Link](ax+" * ");
[Link]("");
tipOp = 3;
}
else{
if(!t){//validacion para nueva operacion
n1 = [Link]([Link]());
ax += [Link]();
[Link](ax+" * ");
[Link]("");
tipOp = 3;
}
else{//usar otras operaciones con la suma
n1 = [Link]([Link]());
ax += [Link]();
[Link](ax+" * ");
[Link]("");
tipOp = 3;
}
}
}
}
if([Link]().equals("/") ){//cuando se decide dividir
numeros[10].setEnabled(true);
ax="";
if(tipOp==4){
}else if(tipOp==0){//validacion para no chocar con otras
operaciones
if([Link]().equals("")){
n1 = [Link]([Link]());
ax += [Link]()+[Link]();
[Link](ax+" / ");
[Link]("");
tipOp = 4;
}
else{
if(!t){//validacion para nueva operacion
n1 = [Link]([Link]());
ax += [Link]();
[Link](ax+" / ");
[Link]("");
tipOp = 4;
}
else{//usar otras operaciones con la suma
n1 = [Link]([Link]());
ax += [Link]();
[Link](ax+" / ");
[Link]("");
tipOp = 4;
}
}
}
}
if([Link]().equals("=") && ![Link]().equals("")){
t = true;
if(tipOp==1){//operacion para la suma
tipOp = 0;
ax="";
ax+=[Link]() + [Link]();
[Link](ax);
n2 = [Link]([Link]());
nr=n1+n2;
[Link]([Link](nr));
}
else if(tipOp==2){ //operacion para la resta
tipOp = 0;
ax="";
ax+=[Link]()+[Link]();
[Link](ax);
n2 = [Link]([Link]());
nr=n1-n2;
[Link]([Link](nr));
}
if(tipOp==3){ //operacion para la multiplicacion
tipOp = 0;
ax="";
ax+=[Link]()+[Link]();
[Link](ax);
n2 = [Link]([Link]());
nr=n1*n2;
[Link]([Link](nr));
}
if(tipOp==4){ //operacion para la multiplicacion
if([Link]([Link]())!=0){
tipOp = 0;
ax="";
ax+=[Link]()+[Link]();
[Link](ax);
n2 = [Link]([Link]());
nr=n1/n2;
[Link]([Link](nr));
}
else
[Link](null, "No se puede
realizar divison por 0");
}
}
}
}
}