Android 有没有办法只解析不为空的文本?
我正在创建一个应用程序,如果斜三角形是可解的,它可以解决缺少的部分,但是我在解析EditText中的数据时遇到了困难。以下是我的代码示例:Android 有没有办法只解析不为空的文本?,android,Android,我正在创建一个应用程序,如果斜三角形是可解的,它可以解决缺少的部分,但是我在解析EditText中的数据时遇到了困难。以下是我的代码示例: Double A, B, C, a, b, c; aa = (EditText)findViewById(R.id.angleA); ab = (EditText)findViewById(R.id.angleB); ac = (EditText)findViewById(R.id.angleC); sa = (EditTex
Double A, B, C, a, b, c;
aa = (EditText)findViewById(R.id.angleA);
ab = (EditText)findViewById(R.id.angleB);
ac = (EditText)findViewById(R.id.angleC);
sa = (EditText)findViewById(R.id.sideA);
sb = (EditText)findViewById(R.id.sideB);
sc = (EditText)findViewById(R.id.sideC);
if (!aa.getText().toString().isEmpty()){
A = Double.parseDouble(aa.getText().toString());
}
if (!ab.getText().toString().isEmpty()){
B = Double.parseDouble(ab.getText().toString());
}
if (!ac.getText().toString().isEmpty()){
C = Double.parseDouble(ac.getText().toString());
}
if (!sa.getText().toString().isEmpty()){
a = Double.parseDouble(sa.getText().toString());
}
if (!sb.getText().toString().isEmpty()){
b = Double.parseDouble(sb.getText().toString());
}
if (!sc.getText().toString().isEmpty()){
c = Double.parseDouble(sc.getText().toString());
}
我想知道是否有较短的编码方法。您可以编写一个函数来完成这项工作:
Double A, B, C, a, b, c;
public void calc()
{
A = getValueOrNan(R.id.angleA);
B = getValueOrNan(R.id.angleB);
C = getValueOrNan(R.id.angleC);
a = getValueOrNan(R.id.sideA);
b = getValueOrNan(R.id.sideA);
c = getValueOrNan(R.id.sideA);
if (A == Double.NaN)
{
// calc A
}
if (B == Double.NaN)
{
// calc B
}
// ...
}
public Double getValueOrNan(int id)
{
EditText et = (EditText)findViewById(id);
if (!et.getText().toString().isEmpty())
{
return Double.parseDouble(et.getText().toString());
}
else
{
return Double.NaN;
}
}
我能想到的最短、可读的方法是:
// Store EditText ids in an array
int[] editTextIds = new int[] { R.id.angleA, R.id.angleB,
R.id.angleC, R.id.sideA, R.id.sideB, R.id.sideC };
// Store EditText values in an ArrayList
ArrayList<Double> results = new ArrayList<>();
// Loop ids, saving values to ArrayList
for (int id : editTextIds) {
String value = ((EditText) findViewById(id)).getText().toString();
if (TextUtils.isEmpty(value)) {
results.add(null);
} else {
results.add(Double.valueOf(value));
}
}
// Now:
// results.get(0) = A
// results.get(1) = B
// results.get(2) = C
// results.get(3) = a
// results.get(4) = b
// results.get(5) = c
// If results.get(x) returns null, means value isn't set
使用和Java异常处理
aa = (EditText)findViewById(R.id.angleA);
ab = (EditText)findViewById(R.id.angleB);
ac = (EditText)findViewById(R.id.angleC);
sa = (EditText)findViewById(R.id.sideA);
sb = (EditText)findViewById(R.id.sideB);
sc = (EditText)findViewById(R.id.sideC);
//Rest of the stuff
//
Double saDouble=getVal(sa);
public Double getVal(EditText et){
Double op=Double.NAN;
try{
if(!TextUtils.isEmpty(et.getText()))
Double.parseDouble(et.getText().toString());
}catch(NumberFormatException e){
//log,toast,dialog whatever you need to display.
}
return op;
}
为什么不创建一个方法来检查和解析它的长度?在什么地方?行数?好的。我的问题终于解决了。我的问题是,当你强制解析空文本时,程序崩溃了。我所做的就是尝试和抓住。谢谢。如果有!=双倍。它不会检查B。