《算法竞赛入门经典》P47
把手放在键盘上时,稍不注意就会往右错一 位。这样,输入Q会变成输入W,输入J会变成输 入K等。键盘如图3-2所示。
输入一个错位后敲出的字符串(所有字母均 大写),输出打字员本来想打出的句子。输入保 证合法,即一定是错位之后的字符串。例如输入中不会出现大写字母A。
样例输入:
O S, GOMR YPFSU/
样例输出:
I AM FINE TODAY.
与UVa 272的题类似,这道题也是需要连续读入控制台输入的信息的。因此依然采用while循环结合hasNextLine()的方法,由于Scanner类的nextLine()方法不能读入换行符,因此在while循环中每读完一行就需要输出一个换行符,以保证和样例输入格式一致。
另外,此题需要利用常量数组来简化代码。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String k="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
char[] key=k.toCharArray();
Scanner in=new Scanner(System.in);
char[] sentence={};
while(in.hasNextLine())
{
String s=in.nextLine();
sentence=s.toCharArray();
for(int i=0;i<sentence.length;i++)
{
for(int j=0;j<key.length;j++)
{
if(sentence[i]==key[j])
{
sentence[i]=key[j-1];
}
}
System.out.print(sentence[i]);
}
System.out.println();
}
in.close();
}
}