PAT B1018 java(18分)
思路:
可以设置一个数组,存放甲以B,C,J赢的次数。
同样可以设置一个数组,存放乙以B,C,J赢的次数。
然后甲win=乙Lose,甲lose=乙win。就可以只判断甲的输赢情况即可。
功能函数:
judge()用来判断胜负的情况。maxIndex()用来返回最大索引,就是一个比较交换函数。
注意事项:我之前想用str.tocharArray()直接转换成char的数组,然后传到judge函数参数进行判断,但不对,我一直不知道为什么。
只好换了函数,用str.charAt(0)获取输入的第一个字符。
代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
import java.math.*;
public class Main {
public int win_jia=0,ping_jia=0,lose_jia=0;
int win_yi=0,ping_yi=0,lose_yi=0;
int jiawin[]=new int[3]; // 存放 C,J,B 的次数
int yiwin[]=new int[3]; //存放 C,J,B的次数
char signs[]={'B','C','J'};
public void judge(char jia,char yi) {
if (jia == yi) {
ping_jia++;
ping_yi++;
}else if(jia=='C'&& yi=='J'){
win_jia++;
jiawin[1]++;
}else if(jia=='C'&& yi=='B'){
lose_jia++;
yiwin[0]++;
}else if(jia=='B'&& yi=='J'){
lose_jia++;
yiwin[2]++;
}else if(jia=='B'&& yi=='C'){
win_jia++;
jiawin[0]++;
}else if(jia=='J'&& yi=='C'){
lose_jia++;
yiwin[1]++;
}else if(jia=='J'&& yi=='B'){
win_jia++;
jiawin[2]++;
}
}
public void output(){
System.out.println(win_jia+" "+ping_jia+" "+lose_jia);
System.out.println(lose_jia+" "+ping_jia+" "+win_jia);
System.out.println(signs[maxIndex(jiawin)]+" "+signs[maxIndex(yiwin)]);
}
//返回最大索引
private int maxIndex(int num[]){
int index=0;
int max=num[0];
for(int i=0;i<3;i++){
if(max<num[i]){
max=num[i];
index=i;
}
}
return index;
}
public static void main(String args[]){
Scanner sc=new Scanner(System.in); //输入数据
String str=sc.nextLine();
int n=Integer.parseInt(str);
Main b=new Main();
for(int i=0;i<n;i++){
char jia=sc.next().charAt(0);
char yi=sc.next().charAt(0);
b.judge(jia,yi);
}
b.output();
}//main
}//class
运行如下: