大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。
输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。
输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。
输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu
代码实现1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int roundNum = scanner.nextInt();
scanner.nextLine();
int round = 0;
while(scanner.hasNext()){
String nextLine = scanner.nextLine();
if (nextLine.equals("End")){
return;
}
if(round==roundNum){
round = 0;
System.out.println(nextLine);
}else {
round++;
if (nextLine.equals("ChuiZi")){
System.out.println("Bu");
}else if(nextLine.equals("JianDao")) {
System.out.println("ChuiZi");
}else if(nextLine.equals("Bu")){
System.out.println("JianDao");
}
}
}
}
}
使用解法1在PTA作答时会有一个测试点会超时,因为Scanner的效率较低,可以改用BufferedReader进行作答,解法如下:
代码实现2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String s = bufferedReader.readLine();
int roundNum = Integer.parseInt(s);
int round = 0;
String readLine = bufferedReader.readLine();
while(!readLine.equals("End")){
if(round!=roundNum){
round++;
if (readLine.equals("JianDao")){
System.out.println("ChuiZi");
}else if (readLine.equals("ChuiZi")){
System.out.println("Bu");
}else if(readLine.equals("Bu")){
System.out.println("JianDao");
}
}else{
round = 0;
System.out.println(readLine);
}
readLine = bufferedReader.readLine();
}
}
}