问题形容
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);
}
}
运行截图