浙江大学PAT (Basic Level) Practice (中文)1014福尔摩斯的约会JAVA实现代码及分析

1014

福尔摩斯的约会

在这里插入图片描述
这道题需要注意的地方有以下几点:
①决定星期几的是前两个字符串的第一个相同的大写字母,注意是第一个大写的字母,小写不算。
②决定分钟数的是后两对字符串的第一个相同的字母所出现的位置,也就是它的下标位置,这里大小写字母均可以但是不可以是其他字符。
③小时和分钟的输出格式是两位输出,也就是说不足两位时要在前面加0补足位数之后进行输出。

具体实现代码如下:

import java.util.Scanner;

public class Main {
	
    public static void main(String[] args) 
    {
      char a[][]=new char[4][];
      String temp;
      Scanner input=new Scanner(System.in);
      for(int i=0;i<4;i++)
      {
    	  temp=input.next();
    	  a[i]=temp.toCharArray();
      }
      printDayAndHour(a[0],a[1]);
      printMin(a[2],a[3]);
    }
    public static void printDayAndHour(char []a1,char[]a2)
    {
    	int m=Math.min(a1.length,a2.length);
    	boolean flag=false;
    	for(int i=0;i<m;i++)
    	{
    		if(a1[i]==a2[i])
    		{
    			if(!flag)
    			{
    				switch(a1[i])
    				{
	    				case 'A':
	    				{
		    				System.out.print("MON"+" ");
		    				flag=true;
		    				break;
	    				}
	    					
	    				case 'B':	
	    				{
	    					System.out.print("TUE"+" ");
	    					flag=true;
	    					break;
	    				}
		    					
	    					
	    				case 'C':  
	    				{
	    					System.out.print("WED"+" ");
	    					flag=true;
	    					break;
	    				}
	    					
	    				case 'D':
	    				{
	    					System.out.print("THU"+" ");
	    					flag=true;
	    					break;
	    				} 					
	    				case 'E':
	    				{
	    					System.out.print("FRI"+" ");
	    					flag=true;
	    					break;
	    				}
	
	    				case 'F':
	    				{
	    					System.out.print("SAT"+" ");
	    					flag=true;
	    					break;
	    				}
	    				case 'G':
	    				{
	    					System.out.print("SUN"+" ");
	    					flag=true;
	    					break;
	    				}
    				}
    			}
    			else 
    			{
    				if((a1[i] >= '0' && a1[i] <= '9') || (a1[i] >= 'A' && a1[i] <= 'N'))
    				{
    						if(a1[i] >= '0' && a1[i] <= '9')
    						{
								System.out.printf("%02d:",a1[i]-'0');//格式化补零
							}	
    						
    						else
    						{
    							System.out.printf("%02d:",a1[i]-'A'+10);//格式化补零
    						}
    							
    						break;
    					
    				}
    			}
    		}
    	}
    }

    public static void printMin(char []a3,char[]a4)
    {
    	int m=Math.min(a3.length,a4.length);
    	for(int i=0;i<m;i++) 
    	{
    		if((a3[i]==a4[i]))
    		{
    			if((a3[i]>='a'&&a3[i]<='z')||(a3[i]>='A'&&a3[i]<='Z'))
    			{
    				String s=String.format("%02d", i);//格式化补零
        			System.out.print(s);
        			break;
    			}
    			
    		}
    	}
    }

}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值