我想显示我的应用的完整输入和输出。
例如:
点击计算器中的“=”后需要显示 2+2=4
。
我的问题是app意外关闭。
package com.scientific.calculator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ToggleButton;
public class Calculator extends Activity{
EditText display;
Button btn,btnop,add,sub,mul,div;
ToggleButton shift;
String operator,result;
float value=0;
Character op = 'q';
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator);
display = (EditText)findViewById(R.id.etDisplay);
shift = (ToggleButton)findViewById(R.id.tbShift);
}
public void set_number(View v) {
// TODO Auto-generated method stub
btn = (Button)findViewById(v.getId());
result = display.getText().toString();
display.setText(result+btn.getText().toString());
}
public void btnplusclicked(View v){
perform(v);
op = '+';
}
public void btnminusclicked(View v){
perform(v);
op = '-';
}
public void btndivideclicked(View v){
perform(v);
op = '÷';
}
public void btnmulticlicked(View v){
perform(v);
op = '×';
}
public void btnequalClicked(View v){
evaluate();
}
public void perform(View v) {
// TODO Auto-generated method stub
btnop=(Button)findViewById(v.getId());
result=display.getText().toString();
operator=btnop.getText().toString();
display.setText(result+operator);
}
private void evaluate() {
// TODO Auto-generated method stub
value=Float.valueOf(display.getText().toString());
if(op == '+')
value=Float.valueOf(display.getText().toString())+value;
else if(op == '-')
value=Float.valueOf(display.getText().toString())-value;
else if(op == '/')
value=Float.valueOf(display.getText().toString())/value;
else if(op == '*')
value=Float.valueOf(display.getText().toString())*value;
display.setText(String.valueOf(value));
}
}
答案 0 :(得分:0)
尝试理解这种方式。点击等于evaluate()
时会调用。
其中第一行是value=Float.valueOf(display.getText().toString());
那就是将display
转换为Float
虽然计算机能够转换第一个数字,但是当它到来时,它们之间会读取运算符。它不能转换它。因此崩溃。只是为了放心。
键入2,然后按equal
我敢打赌它不会崩溃。
现在你要做的就是。什么时候调用运算符(+ - * /)。使用float变量并计算它并将其保存在内存中。一旦用户按下等于。显示该值。虽然很简单。
更多参考请查看simple cal或complex calc
答案 1 :(得分:0)
您似乎正在尝试将'123+25'
解析为浮动。所以它会给出错误
如果用户按下'1+2-3*4'
您的operator '*'
会怎么样。所以它可能无法正常工作。请在这里查看calculator for android ..