Seguimos haciendo lo básico de la programación, en este caso es un código que le he repasado a kabalt ya que no le funcionaba, lo subo yo por que soy la única persona activa de este blog.
Se trata de una calculadora muy básica suma, resta, multiplica, divide y hace potencias, nada del otro mundo. El problema es que esta persona trabaja desde hace años en host, con PL1 o Cobol y claro, todo lo que es la POO se le ha olvidado del todo, acepto el moverse en el mundillo de Android para recuperar un poco lo que es la lógica de la programación orientada a objetos, no es que yo sea un lumbreras en todo esto pero bueno, tampoco lo desconozco, como siempre os dejo el código y una pequeña captura de pantalla para que comentéis que os parece.
public class textobox extends Activity
{
/*private EditText Minumero;*/
private EditText Miresultado;
public boolean operando = false;
public int num;
public char operacion = ' ';
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* Minumero =(EditText) findViewById(R.id.numero); */
Miresultado=(EditText) findViewById(R.id.Resultado);
/* Identificadores de los botones suma, resta, multiplica y divide */
Button Suma = (Button) findViewById(R.id.Sumar);
Button Resta = (Button) findViewById(R.id.Restar);
Button Multiplica = (Button) findViewById(R.id.Multiplicar);
Button Divide = (Button) findViewById(R.id.Dividir);
Button Mostrar = (Button) findViewById(R.id.Mostrar);
Button Reset = (Button) findViewById(R.id.Reset);
Button Quadrado = (Button) findViewById(R.id.Quadrado);
/* declaramos variable auxiliar para las operaciones */
/* acciones onclick para cada boton */
try{
Suma.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
if(!operando){
num = Integer.parseInt(Miresultado.getText().toString());
operacion = '+';
operando = true;
}else{
num = num + Integer.parseInt(Miresultado.getText().toString());
operacion = '+';
}
Miresultado.setText(null);
}
});
Resta.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
if(!operando){
num = Integer.parseInt(Miresultado.getText().toString());
operacion = '-';
operando = true;
}else{
num = num - Integer.parseInt(Miresultado.getText().toString());
operacion = '-';
}
Miresultado.setText(null);
}
});
Multiplica.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
if(!operando){
num = Integer.parseInt(Miresultado.getText().toString());
operacion = '*';
operando = true;
}else{
num = num * Integer.parseInt(Miresultado.getText().toString());
operacion = '*';
}
Miresultado.setText(null);
}
});
Divide.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
if(!operando){
num = Integer.parseInt(Miresultado.getText().toString());
operacion = '/';
operando = true;
}else{
num = num / Integer.parseInt(Miresultado.getText().toString());
operacion = '/';
}
Miresultado.setText(null);
}
});
Quadrado.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
if(!operando){
num = Integer.parseInt(Miresultado.getText().toString());
operacion = 'C';
operando = true;
}else{
double numero = Math.pow((double)num,Double.parseDouble(Miresultado.getText().toString()));
num=(int)numero;
operacion = 'C';
}
Miresultado.setText(null);
}
});
Mostrar.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
if(!operando){
Miresultado.setText(opera(num,Integer.parseInt(Miresultado.getText().toString()),'*'));
operacion = '=';
}else{
Miresultado.setText(opera(num,Integer.parseInt(Miresultado.getText().toString()),operacion));
operacion = '=';
}
operando = false;
}
});
Reset.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
num = 0;
operacion = ' ';
operando = false;
Miresultado.setText("");
}
});
}catch(Exception e){
num = 0;
operacion = ' ';
operando = false;
Miresultado.setText("Error");
}
}
public String opera(int x, int y, char operacion){
String num;
switch(operacion){
case '+':
num = ""+(x+y);
break;
case '-':
num = ""+(x-y);
break;
case '/':
num = ""+(x/y);
break;
case '*':
num = ""+(x*y);
break;
case 'C':
double numero = Math.pow((double)x,(double)y);
num=""+numero;
break;
default:
num = "Tipo de operación no soportado";
break;
}
return num;
}
}