乙级PAT真题之福尔摩斯的约会(字符串的基本输入)

题目描述
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。
大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,
因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;
第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);
后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。 输入描述: 输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。 输出描述: 在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期 四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。 输入例子: 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm 输出例子: THU 14:04

 题意:输入的四个字符串,前两个字符串是为了判断星期和小时(也就是前面两个字符串的两对字符相同),后面两对字符串就是判断分钟。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String []args) throws IOException  {
    	BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));///字符流
    	String[] s= new String[4];
    	for(int i=0;i<4;i++) {
    		s[i]=buffer.readLine();///会抛出错误。读取一行数据
    	}
    	
    	String str = "";///初始化
    	for(int i=0,flag=0;i<Math.min(s[0].length(), s[1].length());i++) {///前两对字符串,选出最短的一串
    		char zero = s[0].charAt(i);
    		char one = s[1].charAt(i);
    		if(flag==1&&zero==one) {///先判断时针就可以防止冲突
    			if(zero>='0'&&zero<='9') {
    				str = str+"0"+zero+":";
    				break;
    			}
    			else if(zero>='A'&&zero<='Z') {
    				int num = zero-'A'+10;
    				str = str+Integer.toString(num)+":";///执行将int转换为String的操作
    				break;
    			}
    		}
    		if(zero>='A'&&zero<='Z'&&one>='A'&&one<='Z') {
    			if(zero==one) {
    				flag=1;
    					switch((zero-'A'+1)%7) {
    					case 0:
    						str+="SUN ";
    						break;
    				    case 1:
						    str+="MON ";
						    break;
    				    case 2:
    						str+="TUE ";
    						break;
    				    case 3:
    						str+="WED ";
    						break;
    				    case 4:
    						str+="THU ";
    						break;
    				    case 5:
    						str+="FRI ";
    						break;
    				    case 6:
    						str+="SAT ";
    						break;
					   }
    		   }
    		}
    }
    	
   for(int i=0;i<Math.min(s[2].length(), s[3].length());i++) {
	   char two = s[2].charAt(i);
	   char three = s[3].charAt(i);
	   if(two>='A'&&two<='Z'&&three>='A'&&three<='Z'||two>='a'&&two<='z'&&three>='a'&&three<='z') {
		    if(two==three) {
		    	i=i>60?i%60:i;
		    	if(i<10) {
		    		str=str+"0"+Integer.toString(i);
		    		break;
		    	}
		    	else {
		    		str=str+Integer.toString(i);
		    		break;
		    	}
		    }
	   }
   }
   System.out.println(str);
  }
}

  

posted @ 2020-02-02 09:52  wusheng_z  阅读(179)  评论(0编辑  收藏  举报