感谢您的帮助,我正在学习使用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);
}
}
答案 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);