Android app Toast 混乱
Android app Toast confusion
我的应用程序是一个测验应用程序,其中有一个部分会在用户回答完所有问题后吐出一定比例的问题作为吐司。
toast 出现了,但百分比总是显示为 0。
我前面有一些日志消息:
Log.i("MainActivity", "Amount i got right "+Integer.toString(right));
Log.i("MainActivity", "total is "+Integer.toString(total));
Toast.makeText(this, "You answered " + (right/total)*100 + "% of questions correct", Toast.LENGTH_SHORT).show();
在日志中显示“I/MainActivity:我做对的数量 4
总数为 6"
为什么吐司百分比为 0?
函数如下:
int i = 0;
int total = mQuestionBank.length;
check = true;
right = 0;
while (i<total && check){
if(mQuestionBank[i].isAlreadyAnswered()){
if(mQuestionBank[i].isAnswerTrue()){
right+=1;
check = true;
}
}else{
check = false;
}
i++;
}
if(check) {
double percent = (right / total) * 100;
Log.i("MainActivity", "Amount i got right "+Integer.toString(right));
Log.i("MainActivity", "total is "+Integer.toString(total));
Toast.makeText(this, "You answered " + (right/total)*100 + "% of questions correct", Toast.LENGTH_SHORT).show();
}else {
int question = mQuestionBank[mCurrentIndex].getTextResId();
mQuestionTextView.setText(question);
mTrueButton.setEnabled(!mQuestionBank[mCurrentIndex].isAlreadyAnswered());
mFalseButton.setEnabled(!mQuestionBank[mCurrentIndex].isAlreadyAnswered());
}
Toast 说 "You answered 0% of the questions correct"
代码没问题。你只需要一个简单的修改。
试试这个:
double percent = (right*100)/total ;
或者,
double percent = ((double)right/total)*100 ;
希望这会奏效。
更新:
为什么您的代码不起作用?
以 right = 5
和 total = 10
为例。由于变量 right 和 true 是整数,因此 right/total
将始终为 0 零,因为它们将 return 为整数值,并且 .
之后的值不被视为整数值。
要解决此问题,您可以将 right 和 total 作为 double 变量或将 right 转换为 double 。和第一个解释公式。 ***因为 right*100 = 500
和 (right*100)/total = 500/10 = 50
.
我不确定这样试试:
`Toast.makeText(this, "You answered " + pecent + "% of questions correct", Toast.LENGTH_SHORT).show();`
我想你可以稍微修改一下你的公式:
Toast.makeText(this, "You answered " + ((right*100)/total) + "% of questions correct", Toast.LENGTH_SHORT).show();
除非您需要更精确的数字,否则无需使用 double。
我的应用程序是一个测验应用程序,其中有一个部分会在用户回答完所有问题后吐出一定比例的问题作为吐司。
toast 出现了,但百分比总是显示为 0。
我前面有一些日志消息:
Log.i("MainActivity", "Amount i got right "+Integer.toString(right));
Log.i("MainActivity", "total is "+Integer.toString(total));
Toast.makeText(this, "You answered " + (right/total)*100 + "% of questions correct", Toast.LENGTH_SHORT).show();
在日志中显示“I/MainActivity:我做对的数量 4 总数为 6"
为什么吐司百分比为 0?
函数如下:
int i = 0;
int total = mQuestionBank.length;
check = true;
right = 0;
while (i<total && check){
if(mQuestionBank[i].isAlreadyAnswered()){
if(mQuestionBank[i].isAnswerTrue()){
right+=1;
check = true;
}
}else{
check = false;
}
i++;
}
if(check) {
double percent = (right / total) * 100;
Log.i("MainActivity", "Amount i got right "+Integer.toString(right));
Log.i("MainActivity", "total is "+Integer.toString(total));
Toast.makeText(this, "You answered " + (right/total)*100 + "% of questions correct", Toast.LENGTH_SHORT).show();
}else {
int question = mQuestionBank[mCurrentIndex].getTextResId();
mQuestionTextView.setText(question);
mTrueButton.setEnabled(!mQuestionBank[mCurrentIndex].isAlreadyAnswered());
mFalseButton.setEnabled(!mQuestionBank[mCurrentIndex].isAlreadyAnswered());
}
Toast 说 "You answered 0% of the questions correct"
代码没问题。你只需要一个简单的修改。 试试这个:
double percent = (right*100)/total ;
或者,
double percent = ((double)right/total)*100 ;
希望这会奏效。
更新:
为什么您的代码不起作用?
以 right = 5
和 total = 10
为例。由于变量 right 和 true 是整数,因此 right/total
将始终为 0 零,因为它们将 return 为整数值,并且 .
之后的值不被视为整数值。
要解决此问题,您可以将 right 和 total 作为 double 变量或将 right 转换为 double 。和第一个解释公式。 ***因为 right*100 = 500
和 (right*100)/total = 500/10 = 50
.
我不确定这样试试:
`Toast.makeText(this, "You answered " + pecent + "% of questions correct", Toast.LENGTH_SHORT).show();`
我想你可以稍微修改一下你的公式:
Toast.makeText(this, "You answered " + ((right*100)/total) + "% of questions correct", Toast.LENGTH_SHORT).show();
除非您需要更精确的数字,否则无需使用 double。