使用Java创建Android应用程序有困难

使用Java创建Android应用程序有困难,java,android,eclipse,Java,Android,Eclipse,我正在学习一些java来编写简单的android应用程序。目前我正在研究一个温度转换器,如果我没有为输入输入值,就会遇到问题 else if(tempfrom.equals("Rankine")){ if(tempto.equals("Fahrenheit")){ degreesout = degreesin - 459.67; } else if(tempto.equals("Celsius")){

我正在学习一些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");
其中
tempfrom
tento
是对应于转换温度单位的字符串。基本上,我正在检查如果
degreesin.equals(null)
,其中degreesin是输入值,然后将字符串
tento
设置为“请输入值”。然后底部的文本视图将更改为“请输入值”

我不知道我做错了什么,大约两天前我才开始使用java,所以这可能是一件愚蠢的事情:p

试试这个:

Double degreesin = null

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

假设您这样设置degreesin值

String degreesin = txtDegreesIn.getText().toString();
您必须检查空值,如下所示:

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
}
换衣服

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


获取的错误是由于将空
字符串
解析为
双精度
引起的。上面的方法将检查是否有空的
字符串
,并且仅在值不为空时才分析该值。

不要使用equals方法检查null。使用“degreesin==null”这仍然不起作用。下面是如何定义degreesin的:
Double degreesin=Double.parseDouble(ettemp.getText().toString())你能告诉我们你得到的错误吗?如果可能的话,张贴日志。这里有显示错误的部分。还有什么需要扩展的“…14更多”部分吗?我已经尝试将日志导出到文本文件,但它仍然以这种方式显示。这就是degreesin的设置方式:
Double 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:无效的双精度:“”
按如下方式分配degreesin:double degreesin=null;请尝试{degreesin=Double.parseDouble(ettemp.getText().toString());}catch(NumberFormatException nfe){//empty input}
Double degreesin = 0;

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