2

プログラムに問題があります。textveiw に小数が表示されません。何が起こっているのかを詳しく説明します。ユーザーは textEdit に数値を入力します (また、textedit が数値と小数点のみを受け入れるようにするにはどうすればよいですか?) その数値は int に変換され、2 番目のアクティビティに送信され、3600 で除算され、textveiw ボックスに表示されます。問題は、その数値が表示されるときに小数値がないことです。たとえば、1 未満の場合、何も表示されません。これを修正するにはどうすればよいですか? 少なくとも1000位まで行く必要があります。これが私のコード1のアクティビティ1です:

    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);

そして、これは数値を表示する必要がある activity2 です。

    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));
}

どんな助けでも大歓迎です!ありがとう!

4

4 に答える 4

2

double または float を使用します。私が見たところ、int が 2 であり 2.5 ではないため、5 を 2 で割った値が 2 であることを忘れていたことを除いて、すべてが機能するはずです。

gtumcaが言ったようにして、doubleを使用してください。long はより大きな int です。

つまり... アクティビティ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;
于 2012-07-27T13:49:59.020 に答える
1

intデータ型として使用しているため、int値のみを取得しています

double PPS = 0;
^^^^^^
instead of           
int PPS = 0;
于 2012-07-27T13:36:14.243 に答える
1

その数値は int に変換されます

整数には小数がありません:)

数字のみを受け入れるEditTextに関して:

EditText、inputType 値 (xml) これらのタイプの 1 つを Layout xml の EditText に次のように設定します。

android:inputType="number" 
于 2012-07-27T13:38:18.887 に答える
0

このような大きな精度の数値を保持するために float や double を使用しないでください。float と double は、内部表現のため、小数を正確に表すことができません。1000 桁以上の精度が必要な場合は、 BigDecimalをチェックしてください。

于 2012-07-27T13:54:48.823 に答える