Android 除以 0 时的计算器错误消息
Android calculator error message when dividing by 0
我是 Android Studio 的新手,我正在开发一个计算器应用程序。现在,当我除以零时,自然会收到错误消息 "Infinity",但如果我想将其更改为 "Could not divide by zero",我该怎么做呢?
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Divisionpage extends AppCompatActivity implements View.OnClickListener {
private Button btnDiv;
private TextView AnswDiv;
private EditText Divt1, Divt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_divisionssida);
init();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
private void init() {
btnDiv = (Button)findViewById(R.id.btnDiv);
AnswDiv = (TextView)findViewById(R.id.AnswDiv);
Divt1 = (EditText)findViewById(R.id.Divtal1);
Divt2 = (EditText)findViewById(R.id.Divtal2);
btnDiv.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String num7 = Divt1.getText().toString();
String num8 = Divt2.getText().toString();
switch (v.getId()){
case R.id.btnDiv:
try {
float division = Float.parseFloat(num7) / Float.parseFloat(num8);
AnswDiv.setText(String.valueOf(division));
}catch (Exception e) {
AnswDiv.setText("Could not divide!");
}
break;
}
}
}
如您所见,我尝试捕获异常以显示错误消息,但失败了。你有什么建议?
好吧,您实际上可以检查 num8 值,如果它的 0 设置了正确的消息。
@Override
public void onClick(View v) {
String num7 = Divt1.getText().toString();
String num8 = Divt2.getText().toString();
switch (v.getId()){
case R.id.btnDiv:
try {
final float denominator = Float.parseFloat(num8);
if(denominator == 0){
AnswDiv.setText("Can't divide by zero");
return;
}
float division = Float.parseFloat(num7) / Float.parseFloat(num8);
AnswDiv.setText(String.valueOf(division));
}catch (Exception e) {
AnswDiv.setText("Could not divide!");
}
break;
}
}
您可以通过异常处理进一步改善用户体验,例如:
除非在 edittext 中受到限制,否则 MIME 用户可能会引入非数字字符。尝试解析所述字符将抛出 NumberFormatException,它将在您的异常子句中被捕获并设置您的消息。这虽然没有错,但可以改进,通知用户只有数字字符有效。
catch (NumberFormatException ex){
AnswDiv.setText("Only numbers allowed!");
}
我是 Android Studio 的新手,我正在开发一个计算器应用程序。现在,当我除以零时,自然会收到错误消息 "Infinity",但如果我想将其更改为 "Could not divide by zero",我该怎么做呢?
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Divisionpage extends AppCompatActivity implements View.OnClickListener {
private Button btnDiv;
private TextView AnswDiv;
private EditText Divt1, Divt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_divisionssida);
init();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
private void init() {
btnDiv = (Button)findViewById(R.id.btnDiv);
AnswDiv = (TextView)findViewById(R.id.AnswDiv);
Divt1 = (EditText)findViewById(R.id.Divtal1);
Divt2 = (EditText)findViewById(R.id.Divtal2);
btnDiv.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String num7 = Divt1.getText().toString();
String num8 = Divt2.getText().toString();
switch (v.getId()){
case R.id.btnDiv:
try {
float division = Float.parseFloat(num7) / Float.parseFloat(num8);
AnswDiv.setText(String.valueOf(division));
}catch (Exception e) {
AnswDiv.setText("Could not divide!");
}
break;
}
}
}
如您所见,我尝试捕获异常以显示错误消息,但失败了。你有什么建议?
好吧,您实际上可以检查 num8 值,如果它的 0 设置了正确的消息。
@Override
public void onClick(View v) {
String num7 = Divt1.getText().toString();
String num8 = Divt2.getText().toString();
switch (v.getId()){
case R.id.btnDiv:
try {
final float denominator = Float.parseFloat(num8);
if(denominator == 0){
AnswDiv.setText("Can't divide by zero");
return;
}
float division = Float.parseFloat(num7) / Float.parseFloat(num8);
AnswDiv.setText(String.valueOf(division));
}catch (Exception e) {
AnswDiv.setText("Could not divide!");
}
break;
}
}
您可以通过异常处理进一步改善用户体验,例如: 除非在 edittext 中受到限制,否则 MIME 用户可能会引入非数字字符。尝试解析所述字符将抛出 NumberFormatException,它将在您的异常子句中被捕获并设置您的消息。这虽然没有错,但可以改进,通知用户只有数字字符有效。
catch (NumberFormatException ex){
AnswDiv.setText("Only numbers allowed!");
}