我目前正在学习使用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;
}
} }
}
答案 0 :(得分:0)
更改全部
Integer.parseInt()
到
Double.parseDouble()
以及到double
而不是int
的所有变量声明。
该应用程序崩溃
java.lang.NumberFormatException
当您尝试将1.1
解析为Integer
时。