簡體   English   中英

條件語句在Android App中產生不需要的操作

[英]Conditional statement produces unwanted action in Android App

我有以下代碼供用戶在四個選項之間選擇一個獲勝者。 變量p1,p2,p3和p4在此處使用之前通過比較方法確定(值始終在-3和3之間,其中3個是贏家)。 我遇到的問題是,有時(只有有時)WINNING評估會返回TIE的祝酒詞。 我已經在Toast消息中包含了變量,只是為了確保傳遞正確的值。 所有值均正確。 所以我很茫然。 誰能給我任何想法為什么會這樣呢? 似乎只有一名球員的得分為3,另一名球員的得分為-3時才發生。 因此,我“人為地”將所有變量都增加了3,這樣同一情況下將返回6和3。但是問題仍然存在。 我唯一想到的可能是緩沖或緩存問題。 但是,每次通過onClick動作時,所有變量都會重新初始化為0。 請幫忙。 謝謝。

    public void EvaluatePlayer1(View view) {
    if(p1>=p2 && p1>=p3 && p1>=p4){
        if(p1 == p2 || p1 == p3 || p1 == p4){
            Toast.makeText(getApplicationContext(), p1 + " It's a tie.",
                    Toast.LENGTH_SHORT).show();

        }else{
            Toast.makeText(getApplicationContext(), p1 + " You chose the winner!",
                    Toast.LENGTH_SHORT).show();

        }
    }else{

        Toast.makeText(getApplicationContext(), p1 + "You chose a loser!",
                Toast.LENGTH_SHORT).show();

    } }

更改:

if(p1 == p2 || p1 == p3 || p1 == p4){
            Toast.makeText(getApplicationContext(), p1 + " It's a tie.",
                    Toast.LENGTH_SHORT).show();

        }else{
            Toast.makeText(getApplicationContext(), p1 + " You chose the winner!",
                    Toast.LENGTH_SHORT).show();

        }

if(p1 > p2 && p1 > p3 && p1 > p4){
            Toast.makeText(getApplicationContext(), p1 + " You chose the winner!",
                    Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(), p1 + " It's a tie.",
                    Toast.LENGTH_SHORT).show();    
        }

您允許出現這樣的情況:您的領帶不是真正的贏家(請參閱我的評論)

if(p1>=p2 && p1>=p3 && p1>=p4) {  // can have 2 values >= p1
    if(p1 == p2 || p1 == p3 || p1 == p4) // FIXME: what if we tie with second place?

我認為您可能需要稍微簡化一下比較,然后在邏輯上進行比較。 像這樣的東西

if(p1>p2 && p1>p3 && p1>p4)
    // p1 beat all other scores = winner
else if(p2>p1 || p3>p1 || p4>p1)
    // at least one other score beats p1 = loser
else
    if (p1 == max(p2, p3, p4))  // where max returns the highest other value
        // we equal the max of the other scores = tie for 1st place
    else
        // how did we get here? 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM