在toast Android中使用String.format()字符串

时间:2017-07-15 05:36:07

标签: android string-formatting toast

我试图找出如何输入格式化字符串以在toast中使用。 toast使用普通的旧字符串,例如

string s1 = "You scored"

但它不适用于String.format()。为什么是这样?有什么方法可以解决这个问题吗?我已经知道如果我这样做会有效。

Toast.makeText(this, "You scored: " + score + "%", Toast.LENGTH_LONG).show();

但我希望百分比没有任何小数。我四处搜寻但找不到答案。

这不起作用:

float score = ((float) mNumberCorrect / 6)*100;

Toast.makeText(this, String.format("You scored: %d", score) , Toast.LENGTH_LONG).show();

4 个答案:

答案 0 :(得分:2)

你必须写下%f代替%d,如下所示。

float score = ((float) mNumberCorrect / 6)*100;

Toast.makeText(this, String.format("You scored: %f", score) , Toast.LENGTH_LONG).show();

答案 1 :(得分:1)

你可以这样做:

float score = ((float) mNumberCorrect / 6)*100;

Toast.makeText(this, String.format("You scored: %d %%", score) , Toast.LENGTH_LONG).show();

%%会转义百分比(%)字母并为您提供所需的输出

答案 2 :(得分:0)

如果您想避免小数点,请尝试改为使用int

int score = Math.round(mNumberCorrect / 6 * 100)
Toast.makeText(this, String.format("You scored: %d", score) , Toast.LENGTH_LONG).show();

请注意,您使用的是%d,表示整数,而不是浮点数。有关不同数据类型的用途的详细信息,请参阅this document

答案 3 :(得分:0)

IMO你可以用字符串格式获得浮点值,然后按照上面的Toast显示

 float score = ((float) mNumberCorrect/ 6)*100;
    String sr = String.valueOf(score);

    Toast.makeText(this,"You scored: " + sr , Toast.LENGTH_LONG).show();