我正在开发一个Android应用程序,并且不知道在公式计算中处理空值的热点。这是我的代码,通过它我试图跳过空值,但这不起作用。
更新
其实我正在尝试这样做
package ecc.ecc.pkg;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import ecc.ecc.pkg.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class ECCActivity extends Activity {
Button btncalc;
EditText molcostper;
TextView costper;
double molcost = 0;
double cstperusd = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initcontrols();
}
public void initcontrols()
{
molcostper=(EditText)findViewById(R.id.molcostper);
costper=(TextView)findViewById(R.id.costper);
btncalc=(Button)findViewById(R.id.btnCalc);
btncalc.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
calculate();
}
});
}
public void calculate()
{
NumberFormat formatter = new DecimalFormat("#,###,###,###.##");
molcost=Double.parseDouble(molcostper.getText().toString());
cstperusd = replaceIfNull(molcost,8500)*94
costper.setText(formatter.format(cstperusd));
}
public static <T> T replaceIfNull(T objectToCheck, T defaultValue) {
return objectToCheck==null ? defaultValue : objectToCheck;
}
}
这种方法产生错误请任何人帮忙处理这个
答案 0 :(得分:1)
这一点应该没有完整的解决方案......
molcost的范围应该更多,因为有两个molcost one local to if
other is in else with greater scope
......
double molcost =0;
if (molcostper != null)
{
molcost=Double.parseDouble(molcostper.getText().toString());
}
else
{
molcost=8500;
}
result=molcost*10;
答案 1 :(得分:1)
将您的代码更改为:
double molcost =0;
EditText molcostperss = (EditText) findViewById(R.id.molcostper);
String change = molcostperss.getText().toString();
if (change.trim().equals("") && change!=null ) {
molcost=Double.parseDouble(change);
}
else
{
molcost=8500;
}
result=molcost*10;
编辑:通过将costper初始化为
来更新您的initcontrols()方法 public void initcontrols()
{
molcostper=(EditText)findViewById(R.id.molcostper);
costper=(TextView)findViewById(R.id.costper);
btncalc=(Button)findViewById(R.id.btnCalc);
btncalc.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
calculate();
}
});
}
答案 2 :(得分:0)
您需要在代码中初始化molcost变量。
答案 3 :(得分:0)
试试这个。
if (molcostper != null && !molcostper.getText().toString().isEmpty() )
{
molcost=Double.parseDouble(molcostper.getText().toString());
}
else
{
molcost=8500;
}
如果不起作用,请尝试下载'/data/anr/traces.txt'文件并检查日志。它可能会为您提供一些提示。如果可能,请在此处粘贴日志,以帮助我们确定问题。