1. 程式人生 > >【PAT 乙級(Basic Level)】福爾摩斯的約會

【PAT 乙級(Basic Level)】福爾摩斯的約會

唉,原先不知道怎麼操作字串,找到了一個答案。結果6個測試點中有3個錯誤,測了好久還是找不到錯誤在哪,結果又百度到一份答案,居然通過了,對比了半天還是不知道錯誤在哪裡,頭暈,先存起來,下次再找,這個題目做了一天快到,噁心死了。我果然很水。

錯誤答案原始碼:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		String[] week = { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" };
		char ch[] = new char[2];
		int minu = 0;
		int flag = 0, flag1 = 0;
		String s1 = s.nextLine();
		String s2 = s.nextLine();
		String s3 = s.nextLine();
		String s4 = s.nextLine();
		int minlength1 = s1.length() < s2.length() ? s1.length() : s2.length();
		int minlength2 = s3.length() < s4.length() ? s3.length() : s4.length();
		for (int i = 0; i < minlength1; i++) {
			if (s1.charAt(i) == s2.charAt(i) && s1.charAt(i) >= 'A'
					&& s1.charAt(i) <= 'G' && flag == 0) {
				ch[0] = s1.charAt(i);
				flag = 1;
				continue;
			}
			if ((s1.charAt(i) == s2.charAt(i))
					&& ((s1.charAt(i) >= 'A' && s1.charAt(i) <= 'N') || (s1
							.charAt(i) >= '0' && s1.charAt(i) <= '9')
							&& flag1 == 0 && flag == 1)) {
				ch[1] = s1.charAt(i);
				flag1 = 1;
				break;
			}
		}
		for (int i = 0; i < minlength2; i++) {
			if (s3.charAt(i) == s4.charAt(i)
					&& ((s3.charAt(i) >= 'A' && s3.charAt(i) <= 'Z') || (s3
							.charAt(i) >= 'a' && s3.charAt(i) <= 'z'))) {
				minu = i;
				break;
			}

		}
		if (minu >= 0 && minu <= 9) {
			if (ch[1] >= '0' && ch[1] <= '9') {
				System.out.print(week[ch[0] - 'A'] + " " + ch[1] + ":0" + minu);
			}
			if (ch[1] >= 'A' && ch[1] <= 'N') {
				System.out.print(week[ch[0] - 'A'] + " " + (ch[1] - 'A' + 10)
						+ ":0" + minu);
			}
		} else {
			if (ch[1] >= '0' && ch[1] <= '9') {
				System.out.print(week[ch[0] - 'A'] + " " + ch[1] + ":" + minu);
			}
			if (ch[1] >= 'A' && ch[1] <= 'N') {
				System.out.print(week[ch[0] - 'A'] + " " + (ch[1] - 'A' + 10)
						+ ":" + minu);
			}
		}
	}
}

正確答案原文地址:http://blog.csdn.net/jason_wang1989/article/details/25005537

正確答案原始碼:

import java.util.Scanner;  
  
public class Main {  
    public static void main(String[] args) {  
        String[] strs = new String[7];  
        strs[0] = "MON";  
        strs[1] = "TUE";  
        strs[2] = "WED";  
        strs[3] = "THU";  
        strs[4] = "FRI";  
        strs[5] = "SAT";  
        strs[6] = "SUN";  
        Scanner cin = new Scanner(System.in);  
        String str1 = cin.nextLine();  
        String str2 = cin.nextLine();  
        String str3 = cin.nextLine();  
        String str4 = cin.nextLine();  
        int i;  
        int j = 0;  
        for (i = 0; i <= str1.length() && i <= str2.length(); i++) {  
            if (str1.charAt(i) >= 'A' && str1.charAt(i) <= 'G'  
                    && str1.charAt(i) == str2.charAt(i)) {  
                System.out.print(strs[str1.charAt(i) - 'A'] + " ");  
                break;  
            }  
        }  
  
        for (i = i + 1; i <= str1.length() && i <= str2.length(); i++) {  
            if ((str1.charAt(i) >= '0' && str1.charAt(i) <= '9' || str1  
                    .charAt(i) >= 'A' && str1.charAt(i) <= 'N')  
                    && str1.charAt(i) == str2.charAt(i)) {  
                if (str1.charAt(i) >= '0' && str1.charAt(i) <= '9') {  
                    System.out.print("0" + (str1.charAt(i) - '0') + ":");  
                } else {  
                    System.out.print((str1.charAt(i) - 'A' + 10) + ":");  
                }  
                break;  
            }  
        }  
        for (i = 0; i <= str3.length() && i <= str4.length(); i++) {  
            if ((str3.charAt(i) >= 'a' && str3.charAt(i) <= 'z' || str3  
                    .charAt(i) >= 'A' && str3.charAt(i) <= 'Z')  
                    && str3.charAt(i) == str4.charAt(i)) {  
                j = i;  
                break;  
            }  
        }  
        if (j < 10) {  
            System.out.println("0" + j);  
        } else {  
            System.out.println(j);  
        }  
    }  
}


搜尋

複製