我有使用凯撒密码加密短语的工作代码,但这是预先确定的输入(HELLOWORLD和4作为sift)。
我想做的是让用户可以选择自己的输入和移位
更具体的格式是:
。$java Caesar 3 HELLOWORLD
"HELLOWORLD">
移位3次Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
int i = scanner.nextInt();
问你的问题,然后用户在控制台输入结果。
要使用命令行参数,只需使用args[0]
args[1]
等。在你的例子中,helloworld;- 3为args[0]
, HELLOWORLD为args[1]
。
由于shift
是一个整数,您必须对其进行解析,将其从字符串转换为整数。为了改进代码,您应该捕获输入的字符串无法转换时的任何错误。
public static StringBuffer rotate(int shift, String plainText){
StringBuffer result= new StringBuffer();
for (int i=0; i<plainText.length(); i++){
if (Character.isUpperCase(plainText.charAt(i))){
char ch = (char)(((int)plainText.charAt(i) + shift - 65) % 26 + 65);
result.append(ch);
}
else{
char ch = (char)(((int)plainText.charAt(i) + shift - 97) % 26 + 97);
result.append(ch);
}
}
return result;
}
public static void main(String[] args){
String plainText = args[1];
int shift = Integer.parseInt(args[0]);
System.out.println("Text : " + plainText);
System.out.println("Shift : " + shift);
System.out.println("Cipher: " + rotate(shift, plainText));
}
这是使用您提到的参数后的输出