Android App显示0.0而不是结果

时间:2013-12-20 20:21:39

标签: java android

感谢您的帮助,我正在学习使用java和android进行编程,我的问题是我开发了一个应用程序,从英里转换为km,反之亦然,并在屏幕中间以大数显示结果,但是当点击转换结果只有0.0,我想知道如何显示结果。

这是我的代码

 //Method called when click the button
public void onClick(View view) {
    switch (view.getId()){
        case R.id.radioButton:
            RadioButton milesButton = (RadioButton) findViewById(R.id.radioButton);
            RadioButton kmButton = (RadioButton) findViewById(R.id.radioButton2);
            if(text.getText().length() == 0) {
                Toast.makeText(this, "Please enter a valid number", Toast.LENGTH_LONG).show();
                return;
            }
    }
    Double inputValue = Double.parseDouble(text.getText().toString());
    RadioButton rb = (RadioButton) findViewById(R.id.radioButton);
    RadioButton rb2 = (RadioButton) findViewById(R.id.radioButton2);

    if (rb.isChecked()) {
        text.setText(String.valueOf(Conversor.convertMilesToKm(inputValue)));
        rb.setChecked(false);
        rb2.setChecked(true);
    } else {
        text.setText(String.valueOf(Conversor.convertKmToMiles(inputValue)));
        rb2.setChecked(false);
        rb.setChecked(true);
    }
}

这是我的main.xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame" >

<EditText
    android:gravity="center"
    android:id="@+id/conversion_number"
    android:hint="@string/in_message"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:inputType="numberSigned|numberDecimal"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:ems="10"
    android:layout_marginTop="31dp"
    android:layout_toLeftOf="@+id/button" />

<Button
    android:text="@string/convert"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:onClick="onClick"
    android:layout_alignBottom="@+id/conversion_number"
    android:layout_alignParentRight="true"
    android:layout_marginRight="31dp"
    android:id="@+id/button" />

<RadioGroup
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/conversion_number"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="33dp"
    android:layout_marginRight="175dp"
    android:layout_marginBottom="380dp"
    android:id="@+id/radioGroup">

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Miles"
        android:id="@+id/radioButton"
        android:checked="true"/>

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Kilometers"
        android:id="@+id/radioButton2" />

</RadioGroup>
<LinearLayout
    android:orientation="horizontal"
    android:gravity="center"
    android:padding="10dip"
    android:layout_marginTop="150dip"
    android:layout_marginBottom="20dip"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:focusable="false"
    android:visibility="visible">
    <TextView
        android:id="@+id/bigText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bigText"
        android:textSize="150dip"
        android:focusable="false"
        android:typeface="normal" />
    </LinearLayout>

我的转换器类

package com.algenis.speedcoverter;

public class Conversor {
    //convert to miles
    public static double convertMilesToKm(double miles) {
        double miles_rand;
        miles_rand = (miles * 1.60934);
        return (int)Math.round(miles_rand);
    }
    // convert to km
    public static double convertKmToMiles(double km) {
        double km_rand;
        km_rand = (km * 0.621371);
        return (int)Math.round(km_rand);
    }
}

2 个答案:

答案 0 :(得分:2)

如果使用整数,则只能获得整数!

所以:

return (int)Math.round(km_rand);

以及

return (int)Math.round(miles_rand);
如果km_rand(或miles_rand) 0.1234 小于0.5 )且 1

将返回 0 0.5678 0.5或更高

所以它应该是:

return (double)Math.round(km_rand);

以及

return (double)Math.round(miles_rand);

但是Math.round返回一个int ...所以,你最好删除它!

所以,最后,它应该是:

return km_rand;

以及

return miles_rand;

<强> [编辑]

此外,您使用的是String.valueOf,它会转换为 long (反过来又是整数)。

您应该使用:

myTextView.setText(Float.toString(myNumber)); 

答案 1 :(得分:0)

return (int)Math.round(miles_rand);更改为return(double)Math.round(miles_rand);

return (int)Math.round(km_rand);return (double)Math.round(km_rand);