一、题目链接
http://noi.openjudge.cn/ch0107/04/
二、解题思路
◎ 循环遍历Player1和Player2的每次游戏出拳并进行比较:
→ 如果当次游戏两方出拳相同,输出Tie;
否则如果当次游戏为Player1获胜,输出Player1;
否则,说明当次游戏为Player2获胜,输出Player2。
三、实施步骤
◆ 方法String[] whoWins(String[] player1, String[] player2)处理所有业务逻辑:
→ 参数player1为String类型的数组,存储1号选手所有的出拳;
→ 参数player2为String类型的数组,存储2号选手所有的出拳;
→ 方法whoWins返回String类型的数组,存储player1和player2每次出拳的获胜方。
◇ 方法whoWins实施步骤如下:
◎ 首先,定义int类型的整数n,代表游戏的次数,初始时n=player1.length;
◎ 其次,定义String[] ans=new String[n],存储每次游戏的获胜方;
◎ 然后,通过标记i代表每次游戏的编号,i从0开始,到n-1为止,更新步长为1,循环处理如下:
→ 如果player1[i].equals(player2[i]):令ans[i]="Tie";
否则如果player1[i].equals("Rock")&&player2[i].equals("Scissors")||player1[i].equals("Scissors")&&player2[i].
equals("Paper")||player1[i].equals("Paper")&&player2[i].equals("Rock"):令ans[i]="Player1";
否则:令ans[i]="Player2";
◎ 最后,返回ans。
◇ 在方法main中输入游戏次数、Player1和Player2每次游戏的出拳,将它们作为参数注入方法whoWins,输出计算结果。
四、Java程序
import java.util.Scanner;
public class Main {
public String[] whoWins(String[] player1, String[] player2) {
int n = player1.length;
String[] ans = new String[n];
for (int i = 0; i < n; i++) {
if (player1[i].equals(player2[i])) {
ans[i] = "Tie";
}
else if (player1[i].equals("Rock") && player2[i].equals("Scissors") ||
player1[i].equals("Scissors") && player2[i].equals("Paper") ||
player1[i].equals("Paper") && player2[i].equals("Rock")) {
ans[i] = "Player1";
}
else {
ans[i] = "Player2";
}
}
return ans;
}
public static void main(String[] args) {
Main test = new Main();
Scanner input = new Scanner(System.in);
int N = input.nextInt();
String[] player1 = new String[N];
String[] player2 = new String[N];
for (int i = 0; i < N; i++) {
player1[i] = input.next();
player2[i] = input.next();
}
String[] ans = test.whoWins(player1, player2);
for (String e : ans) {
System.out.println(e);
}
}
}