2012-07-27 87 views
2

我遇到了一个与我的程序有关的问题,我的textveiw不会显示任何小数,继承人发生了什么事情。用户在textEdit中输入一个数字(我怎么让文本编辑器只接受数字和一个小数点?)这个数字被转换为一个int,发送给我的第二个活动,被3600潜入,然后显示在textveiw框中。问题是,当这个数字显示时,它没有小数值,例如,如果它小于1它不会显示任何东西,我怎么能解决这个问题?我需要它至少去第1000个地方。 这里是我的代码一个活动1:textView不会显示小数

public void sendMessage(View view) { 
    // Do something in response to button 
    Intent intent = new Intent(this, PayTracker.class); 
    // Gather text from text boxes 
    EditText editText = (EditText) findViewById(R.id.hourly_wage); 
    //Create String from text 
    String message1 = editText.getText().toString(); 
    //Convert String to Int 
    int HW = 0; 
    try{ 
     HW = Integer.valueOf(message1); 
    } 
    catch(NumberFormatException nfe){ 
     //do something else here 
     //for e.g. initializing default values to your int variables 
    } 
    // Send Integers to PayTracker.java 
    intent.putExtra(MESSAGE_HW, HW); 
    // start new activity 
    startActivity(intent); 

然后这是活性2其中数字需要显示:

public void sendMessage(View view) { 
    // Receive messages from options page 
    Intent intent = getIntent(); 
    int HW = intent.getIntExtra(Options.MESSAGE_HW, 0); 
    // Calculate pay per second 
    int PPS = 0; 
    PPS = (HW/3600); 

    // set textView 
    TextView textView = (TextView) this.findViewById(R.id.yourpay); 
    textView.setText(String.valueOf(PPS)); 
} 

任何帮助,将不胜感激!谢谢!

+0

声明为**浮动PPS = 0F; ** – 2012-07-27 13:42:14

回答

2

使用双打或浮动。从我看到的情况来看,除了你忘记5除以2,因为int是2,而不是2.5,所有事情都应该起作用。

这样做GTUMCA说,并使用双打;多头是更大的整数。

换句话说

... 活性1

try{ 
    HW = Double.valueOf(message1); 
} 

活动2

//double HW = intent.getIntExtra(Options.MESSAGE_HW, 0); 
double HW = intent.getDoubleExtra(Options.MESSAGE_HW, 0); 
    // pay is rarely a round number 
double PPS = HW/3600; 
+0

我只是尝试这样做,我认为它打破了部门和显示器不知何故,不管输入什么号码总是显示0.0 – Hockeyman271 2012-07-27 13:54:20

+0

哎呦,对不起,那可能是因为一个人不应该使用getIntExtra获得额外的双... – Shark 2012-07-27 13:56:34

+0

明白了!改变它得到DoubleExtra,一切正常!谢谢! – Hockeyman271 2012-07-27 14:01:37

1

您正在使用int作为数据类型,所以你得到int值仅

double PPS = 0; 
^^^^^^ 
instead of   
int PPS = 0; 
+0

只让它到第十位,我至少需要第1000个 – Hockeyman271 2012-07-27 13:38:26

+0

不能解释你的评论吗? – MAC 2012-07-27 13:41:59

+0

你的意思是你想要精确到0.001正确吗?使用float或long,应该有足够的精度。 – FWeigl 2012-07-27 13:43:38

1

这个数字被转换为INT

整数不具有小数:)

至于EditText只接受号码:

EditText, inputType values (xml) 设置这些类型到您的EditText在布局XML等中的一个:

android:inputType="number" 
+0

喔好吧,我应该怎么用有那么多精度整数呢? – Hockeyman271 2012-07-27 13:40:19

0

你不应该使用float或double保持数字与如此大的精度。由于其内部表示法,浮点数和double不能完全表示小数部分。请检查BigDecimal,如果您想要1000位准确(或更多)。