2013-10-08 81 views
1

我只是想知道如果我的代碼是正確的,因爲我的分數計數器不增加這裏是我的代碼分數計數器不遞增

result=ans*ans2; 
holdV=(Integer.parseInt(mystr)); 
Boolean b=(holdV==result); 
int i=0; 
if(b){ 
    i++; 
    score.setText(""+i); 
} 
每當我跑我的應用程序

,它移動到一個,然後停止增加即使你得到了正確的答案。這是一個android應用程序的實現。

+1

是b真/假?你得到什麼值score.setText(??) –

+0

b是真的,然後評分的價值是我增加的價值。 – user2699948

回答

5

你總是將值設置爲0瀏覽:

int i=0; // <--set to 0 
if(b){ 
    i++; // <-- increment: result will be 1 
    score.setText(""+i); 
} 

你應該有我聲明,並在循環外初始化,這樣的事情:

int i=0; 
while(someCondition) { 

//.. code, acquiring answer, etc 

    result=ans*ans2; 
    holdV=(Integer.parseInt(mystr)); 
    Boolean b=(holdV==result); 

    if(b){ 
    i++; // <-- increment: result will be 1 
    score.setText(""+i); 
    } 

} 
+0

爲了解決這個問題,請把這個'i'移到現場聲明中或者在這個範圍之外。 – Geros

+1

@Glenn我認爲這取決於解決的問題。這似乎是磨坊作業問題的一個運行,最可能的解決方案是重量更輕:我建議只是在環路外進行移植 – ppeterka

-1

使用while循環,而不是如果(只是回答你的問題)

result=ans*ans2; 
holdV=(Integer.parseInt(mystr)); 
Boolean b=(holdV==result); 
int i=0; 
while(b){ 
    i++; 
    score.setText(""+i); 
} 
+0

有很好的無限循環... – ppeterka

+0

@ ppeterka66我剛剛給出了發生錯誤的地方。 ..和問題不全...因此,如何給予while循環,我認爲如果你不知道mystr,ans,ans2的正確值,你的答案將無法正常工作,請保留 – Riskhan

+0

我不同意。在這種當前形式中,無論代碼周圍的條件如何,您的答案都可能無法正常工作**。我和你的答案之間的重大差異是,假設適當的條件_(例如其他變量的值)my_can_正常運行。如果'b'爲真,你的代碼會做什麼:增加'i',並打印一行,直到世界末日。 **沒有正常的方式打破循環**,因爲'b'是一個局部變量。我認爲這個結果並不是理想的結果。 – ppeterka