pta 乙级 1014 福尔摩斯的约会 java

在这里插入图片描述https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560

//1014
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        char[] a=in.nextLine().toCharArray();
        char[] b=in.nextLine().toCharArray();
        char[] c=in.nextLine().toCharArray();
        char[] d=in.nextLine().toCharArray();
        int len=a.length<b.length?a.length:b.length;
        int len2=c.length<d.length?c.length:d.length;
        int t=0;
        String day="";
        int h=0,m=0;
        String week[] = {"MON","TUE","WED","THU","FRI","SAT","SUN"};
        String outcome="";
        for(int i=0;i<len;i++){
            if(t==0&&a[i]==b[i]&&a[i]>='A'&&a[i]<='G'){
                day=week[a[i]-'A'];
                t++;
            }
            else if(t==1&&a[i]==b[i]&&(Character.isDigit(a[i])||(a[i]<='N'&&a[i]>='A'))){
                if(Character.isDigit(a[i])){
                    h=a[i]-'0';
                }
                else{
                    h=a[i]-'A'+10;
                }
                break;
            }
        }
        for(int i=0;i<len2;i++){
            if(c[i]==d[i]&&Character.isLetter(c[i])){
                m=i;
                break;
            }
        }
        System.out.printf("%s %02d:%02d",day,h,m);
    }
}

错误点,循环一定要能出;h=a[i]-‘0’;漏掉变成h=a[i]是错误的
然后就是几个写法的优化,
System.out.printf("%s %02d:%02d",day,h,m);格式化输出
Character.isDigit(a[i])是否是数字
Character.isLetter(c[i])是否是字母
a[i]<=‘N’&&a[i]>='A’直接大小比较不用减
int m = Math.min(s1.length(), s2.length());Math类的极值方法
char c1 = s1.charAt(i);字符定位的使用

发布了20 篇原创文章 · 获赞 0 · 访问量 405

猜你喜欢

转载自blog.csdn.net/weixin_44211856/article/details/104100704
今日推荐