bugfix> java > 投稿

この質問は以前に聞かれたことがあることは知っていますが、私の場合は違って見えます。 10進数のTextViewがあり、これらの数値は毎回変更されます。その下にボタンがあり、それをクリックすると、textviewで10進数を取得し、ポイントとして追加する必要があります。

これは私が言いたいことです:テキストビューには0.3が表示されることがあります。ボタンをクリックすると、この0.3を取得してポイントに追加する必要があります。テキストビューが0.8を表示している場合、ボタンはその0.8をポイントに追加し、ポイントが累積します。以下は私が試したものです:

私は MainActivity.class を持っています onClick listener のこのコードでボタンの:

String getgPoints = (String)points.getText();
data.edit().putFloat("count", parseFloat(getPoints(preview.this) + getgPoints)).apply();

これはボタンクリックリスナーにありますが、問題はこれです:ポイントは追加されませんが、たとえば、テキストビューが0.3を表示している場合、ボタンをクリックするとコインバランス1回目のクリックで0.3、2回目のクリックで0.33、3回目のクリックで0.333などのように動作しますが、1回目のクリックで0.3、2回目の0.6、3回目の0.9として追加します。 4番目の1.2など。

だから今私の質問は、どうすればコードを修正できますか?

回答 3 件
  • フロートをフロートに追加します(別のフロートに追加する前にgetgPointsをフロートに変換する必要があります)。

    String getgPoints = (String)points.getText();
    data.edit().putFloat("count", parseFloat(getPoints(preview.this) + parseFloat(getgPoints))).apply();
    
    

    テキストが常に有効な float としてフォーマットされることを保証できない場合は、NumberFormatExceptionをキャッチすることを忘れないでください 。

  • 浮動する2番目の文字列を解析していません

  • String s_number = points.getText().toString();
    float f_number = Float.parseFloat(s_number);
    //above is the parsing code
    sum += f_number;
    
    

    ここで、文字列はfloatに解析されます。

あなたの答え