Java 我的Int()总是返回0?
我有这个问题。。。 请注意,tip.setText告诉我它高于0。 我还将在另一个类中调用getResults方法。(Int“correct”已大于0) 我想知道为什么getResults中的correct总是0,以及如何解决这个问题Java 我的Int()总是返回0?,java,android,Java,Android,我有这个问题。。。 请注意,tip.setText告诉我它高于0。 我还将在另一个类中调用getResults方法。(Int“correct”已大于0) 我想知道为什么getResults中的correct总是0,以及如何解决这个问题 public int correct = 0; private String[] questions = {"Question 1", "Question 2", "Question 3", "Question
public int correct = 0;
private String[] questions =
{"Question 1",
"Question 2",
"Question 3",
"Question 4",
"Question 5"
};
public void onClick(View view) {
if (alive == false) {
// startActivity(new Intent("com.aleksei.etb.END"));
return;
}
try {
button_click = MediaPlayer.create(this, R.raw.button_click);
button_click.start();
switch(view.getId()){
case R.id.button5: //main
break;
case R.id.button1: //answer_1
if(correct(1))
correct++;
break;
case R.id.button2: //answer_2
if(correct(2))
correct++;
break;
case R.id.button3: //answer_3
if(correct(3))
correct++;
break;
case R.id.button4: //answer_3
if(correct(4))
correct++;
break;
default:
break;
}
Game(i1);
tip.setText("Correct answers "+correct); //this thing tells me that it's not 0. (Well, in the beggining it's 0, but after counter goes up! (correct++)
} catch (Exception ex){}
}
public int getResults(){
return (int)(correct*5)/(questions.length+1);
}
编辑:
我会确保您在switch语句中确实捕捉到了这些情况。实际上,您可能没有输入这些案例
因此,如果您没有输入这些案例,则
正确
将保持0
我认为您可能正在进行整数除法,因此,如果问题的大小很大,浮点除法将为0。因此,整数除法为0。尝试将“正确”转换为“浮动”,您将得到一个十进制数,而不是一个十进制数。下面是如何快速找到问题的答案:
转向
进入财产
private int _correct = 0;
public int correct
{
get { return _correct; }
set { _correct = value; }
}
并在二传手上设置一个断点。然后,您将看到是否有东西将其设置回零。如果在递增之后没有任何东西将其设置回零,那么可能在某个地方您正在实例化对象的新实例,但您没有意识到您没有使用默认值的新实例
我不认为这是一个整数除法问题,这里有一个注意事项:
您将乘以*5,然后除以5(因为有5个答案)。如果答案的数量在某一点上会发生变化,但5的乘数将保持不变,那么这是有意义的。但除此之外,我不知道你为什么要这样做,因为5/5=1,将某个数字乘以1是没有意义的。开始结束活动时,你应该: Intent end = new Intent("com.aleksei.etb.END"); end.putExtra("results", getResults()); startActivity(end); 意向结束=新意向(“com.aleksei.etb.end”); end.putExtra(“results”,getResults()); 星触觉(结束); 然后从结束活动中删除classy字段,改为在onCreate()方法中读取结果,如下所示: int results = getIntExtra("results"); int results=getIntExtra(“结果”);
这将正确地将结果从一个活动转移到下一个活动。在
getResults()
中是正确的0,或者是anInt
0?“正确”始终是0。。AINT也是如此。<代码>问题>长度+1 < /Cube >相等吗?你有一个称为改正()的方法和一个称为“正确”的字段,你的方法“私有布尔校正(int x)”真的很混乱,考虑给它一个前缀,使你的代码更可读——就像ISECHOTIAM进入这些情况一样。我有tip.setText(“正确答案”+正确)来证明这一点。它告诉我“正确答案(不是0)”仍然得到0.0,即使我的提示是这样的。setText在使用getResults方法之前说了“4”。我得到了平均分,啊,是的!你说得对!第二类'ETBetaActivity classy=新ETBetaActivity();'这意味着我将它重置回0!该死的,我真是太蠢了,你知道我怎么能在不重新设置的情况下把它传给另一门课吗?我不知道你说的是什么意思。。。但我很高兴能帮上忙。我想这可能是你的问题:)我做了一个简单的android问答游戏。现在只有5个问题,4个答案。如果你猜5次,你的平均值是5,如果你猜4次,你的平均值是4。。。等但我会补充更多的问题。例如,你回答了10/25个问题。10*5/25 = 2. (我需要1-5)你到底想做什么?是否要将现有的ETBetaActivity对象传递到另一个ETBetaActivity对象?不知道为什么不使用现有的而不是创建一个新的。不幸的是,我现在得走了,但如果你提出一个新问题,也许其他人可以帮你解决这个问题。祝你好运@是的,直到现在我才意识到我在看Java代码。我不懂Java,所以如果您愿意,请随意编辑我的答案以反映Java代码。
private int _correct = 0;
public int correct
{
get { return _correct; }
set { _correct = value; }
}
Intent end = new Intent("com.aleksei.etb.END");
end.putExtra("results", getResults());
startActivity(end);
int results = getIntExtra("results");