【发布时间】:2016-01-25 16:09:17
【问题描述】:
我在使用布尔方法的返回值时遇到问题。
我正在测试的分数首先是有效的:
public boolean isValidScore() {
boolean isScoreValid = true;
scoreHit = Integer.parseInt(scored.getText().toString());//convert the 3 dart score to store it as an integer
int[] invalidScores = {179, 178, 176, 175, 173, 172, 169, 168, 166, 165, 163, 162};
boolean invalidNumHit = false;
for (int i = 0; i < invalidScores.length; i++) {
if (scoreHit == invalidScores[i]) {
invalidNumHit = true;
}
}
if (scoreHit > 180 || scoreHit > scoreLeft[player] || scoreHit + 1 == scoreLeft[player] || (scoreHit == 159 && scoreLeft[player] == 159) || invalidNumHit) {
//won't adjust score left if invalid score/checkout entered
Toast toast = Toast.makeText(getApplicationContext(),
"You've entered an invalid score, Try again!", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL, 0, 75);
toast.show();
scored.setText("0");//have to reset score to zero as won't do below as will return from method if invalid score
isScoreValid = false;//will exit method i.e. won't adjust scores and stats and switch player if invalid score entered.
}
return isScoreValid;
}
然后我将进入一个调用此方法的方法 - 如果值为 false,我想退出此 enterClicked() 方法 - 这是我的编码方式:
public void enterClicked(View sender) {
isValidScore();
if (isValidScore()) {
} else {
return;//exit method if invalid score entered.
}
//is more code here.....
}
isValidScore() 的值似乎始终为真——即使我输入了无效分数(我用 toast 消息对其进行了测试)。
【问题讨论】:
-
if (isValidScore()) { // do stuff } else{ // don't do stuff} -
@codeMagic 给定操作的
//is more code here.....我会先做出错误的条件。例如。if (!isValidScore()) { return; } -
@Blackbelt
// is more code here在if,不是吗?因为如果它不是有效的分数,则不应在方法中运行任何代码 -
只有两个人知道你的问题@codeMagic 的答案。一个是操作。另一个不是我们
-
顺便说一句,
isValidScore()有副作用的事实并不好。因为从它的名字来看,它的副作用并不明显。我建议重命名它,或者将副作用代码移动到一个单独的方法(不会从isValidScore()调用)...
标签: java android methods return boolean