上周我们的考试中有一个问题。我们被要求设计一个可用于输入字符串和数字的类,其中字符串的字符移动的数量与输入的数字一样多。
要记住两件事。一,情况无关紧要。输出可以是相同的情况,也可以是标准的。二,如果输入A和2,Y就是我们得到的。字母表四处传播。
示例输入:
我爱Java
2
示例输出:
G JMTC HYTY
这是我在考试期间提出的(这是一个书面的,所以我无法检查它是否有效)。当我编译并运行它时,这就是我得到的 -
示例输入:
我爱Java
2
示例输出:
G8JMTC8HYTY
我尝了几个字,所以基本上就是这里发生了什么。空格由10-(
)的数字代替import java.util.*;
public class ENCRYPT
{
static void main()
{
Scanner in=new Scanner(System.in);
System.out.println("Enter the string");
String a=in.nextLine();
a=a.toLowerCase();
System.out.println("Enter the encrption value");
int m=in.nextInt();
String x=""; char ch;
for(int i=0; i<a.length(); i++)
{
ch=a.charAt(i);
if((int)ch-97<m)
{
x=x+(char)((123-m)+(int)ch-97);
}
else if(ch==' ')
{
x=x+' ';
}
else
{
x=x+(char)((int)ch-m);
}
}
System.out.println(x.toUpperCase());
}
}
答案 0 :(得分:1)
错误是因为(int)ch-97&lt; m 对于空间也是 true 。所以它在if语句中进入。
您可以先通过空格检查然后再使用代码来解决问题......
if(ch==' ')
{
x=x+' ';
} else if((int)ch-97<m)
{
x=x+(char)((123-m)+(int)ch-97);
}
else
{
x=x+(char)((int)ch-m);
}