Android,读取空白值

时间:2017-09-26 20:10:39

标签: android

我是Android开发的新手,我试图创建一个简单的毕达哥拉斯计算器,如果一行空白,我需要帮助阅读,但仍然计算而不是失败。

这是我的代码

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private EditText sideAObj;
private EditText sideBObj;
private EditText sideCObj;
private EditText outputObj;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    sideAObj = (EditText) findViewById(R.id.SideAInput);
    sideBObj = (EditText) findViewById(R.id.SideBInput);
    sideCObj = (EditText) findViewById(R.id.SideCInput);
    outputObj = (EditText) findViewById(R.id.OutputText);
}
public  void calculateClick(View v){
    try {
        double sideA = Double.parseDouble(sideAObj.getText().toString());
        double sideB = Double.parseDouble(sideBObj.getText().toString());
        double sideC = Double.parseDouble(sideCObj.getText().toString());



        if (sideAObj.getText().toString().equalsIgnoreCase("0")) {
            double pt = Math.sqrt((sideC * sideC) - (sideB * sideB));
            outputObj.setText(String.format("%.2f", pt));
        }

    }
    catch (NumberFormatException ex){
        Toast errMess = Toast.makeText(getApplicationContext(),"Enter Numbers Only",Toast.LENGTH_SHORT);
        errMess.show();
        outputObj.setText(String.format("%2.f",0.00));
        return;
    }


}
public  void clearClick(View v){
    sideAObj.setText("");
    sideBObj.setText("");
    sideCObj.setText("");
    outputObj.setText("");
    sideAObj.requestFocus();

}

} 我的程序将计算它们是否为1对1,但如果我将其留空,程序将完全失败,最好的方法是防止它。

2 个答案:

答案 0 :(得分:0)

它显然会失败,因为它不知道如何将空值解析为double。在实例化过程中只需使用类似的东西:

double sideB = (sideBObj.getText().toString() == "") ? 0 : (Double.parseDouble(sideBObj.getText().toString()));
double sideC = (sideCObj.getText().toString() == "") ? 0 : (Double.parseDouble(sideCObj.getText().toString()));

基本上,如果编辑文本字段为0,则将分配值0,您将解析输入的值为double。

如果有空白的编辑文本字段,则假设您要考虑0。

=============================================== ========================= 更新

if(sideAObj.getText().toString() != ""){
       double sideA = Double.parseDouble(sideAObj.getText().toString());
}

答案 1 :(得分:0)

此问题的简单解决方案是检查每个edittext是否为空白,然后执行任务。

获取每个Edittext的值为int变量然后使用循环并在edittext.length()方法的帮助下验证它是否等于0,如果是,则将值赋值给0到新的全局变量,否则将确切的值分配给全局变量。

然后使用新变量执行计算。

示例代码以便更好地理解: -

String a = et.getText().toString();
            int l = a.length();

            if (l == 0){
                // set the value of global variable = 0;
            } else {
                // set the value of global variable = a  {Actual Digit}
            }