【发布时间】:2018-12-10 17:08:49
【问题描述】:
我目前正在学习使用 Android Studios,但我很困惑。 我正在做的练习是创建一个带有 +、-、/ 按钮的计算器。我已经完成了计算器,并且我已经让它工作了,除了一个实例。
每当我输入一个浮点数时,即使只有一位小数,程序也会崩溃。我在尝试除以零时也遇到了这种情况,我通过用 try 和 catch 包围代码解决了这个问题。
但是,我不知道应该如何让小数起作用。如果您能查看我的代码并帮助我解决这个问题,我将不胜感激。我的程序包含一个主 java 类和一个主 xml_class。我会把它们贴在下面:
MainActivity.java:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements
View.OnClickListener {
private Button btnAdd,btnSubtract,btnDivide,btnMultiply;
private TextView tvresult;
private EditText etfirst, etsecond;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
btnAdd =(Button) findViewById(R.id.btnAdd);
btnSubtract = (Button) findViewById(R.id.btnSubtract);
btnDivide = (Button) findViewById(R.id.btnDivide);
btnMultiply = (Button) findViewById(R.id.btnMultiply);
etfirst = (EditText) findViewById(R.id.etFirstNumber);
etsecond = (EditText) findViewById(R.id.etSecondNumber);
tvresult = (TextView) findViewById(R.id.tvResult);
btnAdd.setOnClickListener(this);
btnSubtract.setOnClickListener(this);
btnMultiply.setOnClickListener(this);
btnDivide.setOnClickListener(this);
}
@Override
public void onClick(View view) {
String num1 = etfirst.getText().toString();
String num2 = etsecond.getText().toString();
switch (view.getId()) {
case R.id.btnAdd:
double addition = Double.parseDouble(num1) +
Double.parseDouble(num2);
tvresult.setText(String.valueOf(addition));
break;
case R.id.btnSubtract:
double subtraction = Double.parseDouble(num1) -
Double.parseDouble(num2);
tvresult.setText(String.valueOf(subtraction));
break;
case R.id.btnMultiply:
double multiply = Double.parseDouble(num1) *
Double.parseDouble(num2);
tvresult.setText(String.valueOf(multiply));
break;
case R.id.btnDivide:
try {
double division = Double.parseDouble(num1) /
Double.parseDouble(num2);
tvresult.setText(String.valueOf(division));
} catch (Exception e) {
tvresult.setText("Cannot Divide!");
}
break;
}
} }
}
【问题讨论】:
-
您始终可以将
num1和num2解析为适用于整数和浮点的双精度 (Double.valueOf) - 然后问题就变成了格式化答案之一。
标签: android floating-point double calculator