2013-03-28 48 views
0

我正在学习一些用于编写简单android应用程序的java。目前我正在开发一款温度转换器,如果我没有为我的输入输入一个值,会遇到问题。难以用Java创建Android应用程序

else if(tempfrom.equals("Rankine")){ 


     if(tempto.equals("Fahrenheit")){ 
      degreesout = degreesin - 459.67; 
     } 
     else if(tempto.equals("Celsius")){ 
      degreesout = (degreesin - 491.67)*(5./9.); 
     } 
     else if(tempto.equals("Kelvin")){ 
      degreesout = degreesin*(5./9.); 
     } 
     else{ 
      degreesout = degreesin; 
     } 
    } 

    else if(degreesin.equals(null)){ 
     tempto = "Please Enter a Value."; 
    } 


    TextView answer = (TextView) findViewById(R.id.tvdegreesout); 
    TextView units = (TextView)findViewById(R.id.tvUnit); 
    units.setText(tempto); 
    answer.setText(degreesout.toString() + " degrees"); 

tempfromtempto是对应于温度单位进行转换的字符串。基本上,我检查如果degreesin.equals(null),其中degreesin是输入值,则将字符串tempto设置为“请输入值”。然后,底部的文本视图将更改为“请输入一个值”。

我想不出什么我做错了,我刚开始大约两天前Java,所以它可能是一些愚蠢的:P

+1

不使用equals方法来检查null。使用“degreesin == null” – 2013-03-28 05:09:28

+0

这仍然不起作用。这里是我如何定义deg: 'Double degreesin = Double.parseDouble(ettemp.getText()。toString());' – Uthayne 2013-03-28 05:39:25

+0

你能告诉我们你得到的错误吗?如果可能,发布您的logcat – 2013-03-28 05:46:36

回答

0

更改

Double degreesin = Double.parseDouble(ettemp.getText().toString());

Double degreesin = 0; 

if(!ettemp.getText().toString().equals("")){ 
    degreesin = Double.parseDouble(ettemp.getText().toString()); 
} 

错误你获得通过解析一个空StringDouble造成的。以上将检查一个空的String,并且只会解析该值,如果它不是空的。

1

试试这个:

Double degreesin = null 

if(ettemp != null && ettemp.getText() != null && !ettemp.getText().equals("")){ 
    degreesin = Double.parseDouble(ettem.getText()); 
} 
0

假设要设置这样的

String degreesin = txtDegreesIn.getText().toString(); 
你必须检查空值如下

的degreesin值:

if (degreesin.trim().length() == 0){ 
    // handle an empty input 
} 

这也将不允许输入像“”。

回答您的评论:

Double degreesin = null; 
try { 
    degreesin = Double.parseDouble(ettemp.getText().toString()); 
} catch (NumberFormatException nfe){ 
    // empty/invalid input 
} 
+0

这是degreesin如何设置: '双degreesin = Double.parseDouble(ettemp.getText()的toString())' 它是double类型,所以我改变你的代码'if(degreesin.toString()。trim().length()== 0){ //处理一个空输入 }' 并且我仍然得到相同的类型:'03-28 08:52: 28.201:E/AndroidRuntime(13806):引起:java.lang.NumberFormatException:无效的双精度:“” ' – Uthayne 2013-03-28 12:53:51

+0

如下指定degreesin: Double degreesin = null; 尝试degreesin = Double.parseDouble(ettemp.getText()。toString()); } catch(NumberFormatException nfe){ //空输入\t } – trylimits 2013-03-28 14:50:08