描述
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。
游戏规则:石头打剪刀,布包石头,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入
输入包括N+1行:
第一行是一个整数N,表示一共进行了N次游戏。1 <= N <= 100。
接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头、剪子或者是布):
S1 S2
字符串之间以空格隔开S1,S2只可能取值在{“Rock”, “Scissors”, “Paper”}(大小写敏感)中。
输出
输出包括N行,每一行对应一个胜利者(Player1或者Player2),或者游戏出现平局,则输出Tie。
样例输入
3
Rock Scissors
Paper Paper
Rock Paper
样例输出
Player1
Tie
Player2
提示
Rock是石头,Scissors是剪刀,Paper是布。
解法1:(利用字符串的首字符来判断)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int N=in.nextInt();
String n=in.nextLine();
for(int i=0;i<N;i++) {
String a=in.next();
String b=in.next();
char e=a.charAt(0);
char f=b.charAt(0);
if(e=='R') {
if(f=='S') {
System.out.println("Player1");
}
else if(f=='P') {
System.out.println("Player2");
}
else {
System.out.println("Tie");
}
}
else if(e=='S') {
if(f=='P') {
System.out.println("Player1");
}
else if(f=='R') {
System.out.println("Player2");
}
else {
System.out.println("Tie");
}
}
else if(e=='P') {
if(f=='R') {
System.out.println("Player1");
}
else if(f=='S') {
System.out.println("Player2");
}
else {
System.out.println("Tie");
}
}
}
}
}
解法2:(直接用字符串进行判断)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int N=in.nextInt();
String a[]=new String[N];
String b[]=new String[N];
for(int i=0;i<N;i++) {
a[i]=in.next();
b[i]=in.next();
}
for(int i=0;i<N;i++) {
if(a[i].equals("Rock")) {
if(b[i].equals("Scissors")){
System.out.println("Player1");
}
else if(b[i].equals("Paper") ){
System.out.println("Player2");
}
else {
System.out.println("Tie");
}
}
else if(a[i].equals("Scissors")) {
if(b[i].equals("Paper")){
System.out.println("Player1");
}
else if(b[i].equals("Rock") ){
System.out.println("Player2");
}
else {
System.out.println("Tie");
}
}
else if(a[i].equals("Paper") ){
if(b[i].equals("Rock") ){
System.out.println("Player1");
}
else if(b[i].equals("Scissors") ){
System.out.println("Player2");
}
else {
System.out.println("Tie");
}
}
}
}
}
解法2中需注意的地方:
1.字符串输入时需要使用String a=in.next();而不是String a=in.nextLine();(同样解法1也需要注意)
2.在if语句中,if(a[i]= =“Rock”)该语句中的a[i]= ="Rock"为false,应该改为a[i].equals(“Rock”).
3.对于2中的解释:
一般两个字符串判断是否是相等的(以字符串a与b为例),推荐使用a.equals(b),equals比较的才是真正的内容
解释例子:
(1)String a=“hello”;
String b=“hello”;
则a==b为true
且a.equals(b)也为true
(2)String c=new String(“hello”);
String d=new String(“hello”);
则c=c=d为false
但c.equals(d)为true
(3)String a=in.nextLine;
String b=in.nextLine();
a==b为false
但是a.equals(b)为true