一道PAT1071 小赌怡情 测试点错误

img


/*
100 4                        Win 100!  Total = 200.
8 0 100 2                    Lose 50.  Total = 150.
3 1 50 1                     Not enough tokens.  Total = 150.
5 1 200 6                    Not enough tokens.  Total = 150.
7 0 200 8
 */
import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        int t=scan.nextInt(),K= scan.nextInt();
        for(int i=0;i<K;i++){
            int n1=scan.nextInt(),choice=scan.nextInt(),bet= scan.nextInt(),n2=scan.nextInt();
            if(bet>t){
                System.out.println("Not enough tokens.  Total = "+t+".");
            }
            else{
                if(choice==0){
                    if(n1>n2){
                        t=t+bet;
                        System.out.println("Win "+bet+"!  Total = "+t+".");
                    }
                    else{
                        t=t-bet;
                        System.out.println("Lose "+bet+".  Total = "+t+".");
                        if(t==0){
                            System.out.println("Game over.");
                            break;
                        }
                    }
                }
                else{
                    if(n1<n2){
                        t=t+bet;
                        System.out.println("Win "+bet+"!  Total = "+t+".");
                    }
                    else{
                        t=t-bet;
                        System.out.println("Lose "+bet+".  Total = "+t+".");
                        if(t==0){
                            System.out.println("Game over.");
                            break;
                        }
                    }
                }
            }
        }

    }
}

感觉按部就班的写应该没啥问题,但是做出来爆了三个测试点,具体哪里有问题?

img

好像人家Game Over.是大写的,而你是小写的Game over.
另:
逻辑太复杂了,不利于复用和调试
4重if判断可以合并

if((choice==0) == (n1>n2)){
}

表达式为真时表示猜对了,为假是表示猜错了,这样逻辑会简单很多