Java 石头剪刀布

问题描述

Alice, Bob和Cindy一起玩猜拳的游戏。和两个人的猜拳类似,每一轮,他们会从石头、剪刀、布中各自选一个出拳,基本的胜负规则是石头赢剪刀、剪刀赢布、布赢石头。如果一轮中正好可以分成胜负两边,则负边的每个人要支付给胜边的每个人一块钱。如果无法分成胜负两边,则都不出钱。比如,如果Alice出石头,而Bob和Cindy都出布,则Alice要分支付Bob和Cindy一块钱。再如,如果Alice出石头, Bob出剪刀, Cindy出布,则都不出钱。他们三人共进行了n轮游戏,请问最后每个人净赚多少钱?即赚的钱减去支付的钱是多少?

代码
package Ring1270.pra.java01;
import java.util.Scanner;
/**
 * finger-guessing game: *  n:number of games *  A: Person A's money *  B: Person B's money *  C: Person C's money *  0: Stand for stone *  1: Stand for Scissor *  2: Stand for cloth *  rule1: Two persons give the same result means game over *  Rule2: The money add 1 everytime which win *  Rule3:The money less 1 everytime which fail * */public class D_FingerGuessingGame {
    public static void main(String[] args) {
        int A = 0;
        int B = 0;
        int C = 0;
        Scanner scanner = new Scanner(System.in);
        System.out.printf("The number of game:");
        int n = scanner.nextInt();
        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i <= n; i++) {
            String s = scanner.nextLine();
            char[] D = s.toCharArray();
            for (int j = 0; j < D.length; j++) {
                //A and B success
 if (D[0] == D[1] && D[0] != D[2]) {
                    if ('0' == D[0] && '1' == D[2]) {
                        A++;
                        B++;
                        C -= 2;
                    }
                    else if ('1' == D[0] && '2' == D[2]) {
                        A++;
                        B++;
                        C -= 2;
                    }
                    else if ('2' == D[0] && '0' == D[2]) {
                        A++;
                        B++;
                        C -= 2;
                    }else {
                        A--;
                        B--;
                        C += 2;
                    }
                }
                // A and C success
 if (D[0] == D[2] && D[0] != D[1]) {
                    if ('0' == D[0] && '1' == D[1]) {
                        A++;
                        B -= 2;
                        C++;
                    }
                    else if ('1' == D[0] && '2' == D[1]) {
                        A++;
                        B -= 2;
                        C++;
                    }
                    else if ('2' == D[0] && '0' == D[1]) {
                        A++;
                        B -= 2;
                        C++;
                    }else {
                        A--;
                        B += 2;
                        C--;
                    }
                }
                // C and B success
 if (D[1] == D[2] && D[1] != D[0]) {
                    if ('0' == D[1] && '1' == D[0]) {
                        A -= 2;
                        B++;
                        C++;
                    }
                    else if ('1' == D[1] && '2' == D[0]) {
                        A -= 2;
                        B++;
                        C++;
                    }
                    else if ('2' == D[1] && '0' == D[0]) {
                        A -= 2;
                        B++;
                        C++;
                    }
                    else {
                        A += 2;
                        B--;
                        C--;
                    }
                }
                break;
            }
        }
        System.out.println(A);
        System.out.println(B);
        System.out.println(C);
    }
}
运行截图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VODENfEM-1613975843850)(/img/bVcOMxj)]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值