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);字符定位的使用