lyh20021209 2022-01-30 09:02 采纳率: 76.9%
浏览 51
已结题

一道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

  • 写回答

1条回答 默认 最新

  • 於黾 2022-01-30 10:19
    关注

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月7日
  • 已采纳回答 1月30日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化