題目描述
一個二進制數,將其每一位取反,稱之為這個數的反碼。下面我們定義一個字符的反碼。如果這是一個小寫字符,則它和字符'a’的距離與它的反碼和字符'z’的距離相同;如果是一個大寫字符,則它和字符'A’的距離與它的反碼和字符'Z’的距離相同;如果不是上面兩種情況,它的反碼就是它自身。 舉幾個例子,'a’的反碼是'z’;'c’的反碼是'x’;'W’的反碼是'D’;'1’的反碼還是'1’;'$'的反碼還是'$'。 一個字符串的反碼定義為其所有字符的反碼。我們的任務就是計算出給定字符串的反碼。
輸入描述:
輸入每行都是一個字符串,字符串長度不超過 80 個字符。如果輸入只有!,表示輸入結束,不需要處理。
輸出描述:
對於輸入的每個字符串,輸出其反碼,每個數據占一行。
輸入例子:
Hello
JLU-CCST-2011
!
輸出例子:
Svool
QOF-XXHG-2011
實現代碼如下:
import java.util.Scanner; public class 字符串反碼 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (true) { String str = in.nextLine(); if (str.length() == 1 && str.charAt(0) == '!') //也可以是if (str.equals("!")) break; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) >= 'a' && str.charAt(i) <= 'z') { int t = str.charAt(i) - 'a'; System.out.printf("%c", 'z' - t); } else if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z') { int t = str.charAt(i) - 'A'; System.out.printf("%c", 'Z' - t); } else System.out.print(str.charAt(i)); } System.out.println(); } in.close(); } }