我想創建一個凱撒密碼,我有輸入作爲程序中的硬代碼。當我運行該程序時,它的工作原理是,但應該是「Y」的所有內容都是「?」。我無法弄清楚如何循環ASCII,所以當它小於65時,它會增加26或循環回到90.下面是我到目前爲止的代碼。這個轉變是-3來破譯它。凱撒密碼幫助ASCII循環
import java.util.Scanner;
public class Caesar {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter the shift value");
int shiftValue = in.nextInt();
String ciphertext = "WKHQHZRUNLQJDQGFBEHUVHFXULWBGHSDUWPHQWDWURVHVWDWHF ROOHJHRIIHUVDFHUWLILFDWHSURJUDPLQLQIRUPDWLRQVHFXULWBDW DOOIHGHUDOWUDLQLQJOHYHOVWKHSURJUDPFHUWLILHVWKHVWXGH QWVVDWLVIBLQJSURJUDPUHTXLUHPHQWVDUHWUDLQHGWRWKHIHGH UDOQVWLVVLFQVVLVWDQGDUGVIRULQIRUPDWLRQVBVWHPVVHFXUL WBSURIHVVLRQDOVGHVLJQDWHGDSSURYLQJDXWKRULWLHVLQIRUPD WLRQVBVWHPVHFXULWBRIILFHUVVBVWHPVFHUWLILHUVDQGULVNDQ DOBVWUHVSHFWLYHOB";
//System.out.print(ciphertext);
System.out.println();
//I take each character, convert it to its ascii value, subtract 3,
//then convert back to a character
for(int i=0; i <= 48; i++) {
System.out.print((char)((int)ciphertext.charAt(i)+shiftValue));
}
System.out.println();
for(int i=49; i <= 102; i++) {
System.out.print((char)((int)ciphertext.charAt(i)+shiftValue));
}
System.out.println();
for(int i=103; i < 152; i++) {
System.out.print((char)((int)ciphertext.charAt(i)+shiftValue));
}
System.out.println();
for(int i=152; i < 200; i++) {
System.out.print((char)((int)ciphertext.charAt(i)+shiftValue));
}
System.out.println();
for(int i=200; i < 248; i++) {
System.out.print((char)((int)ciphertext.charAt(i)+shiftValue));
}
System.out.println();
for(int i=248; i < 307; i++) {
System.out.print((char)((int)ciphertext.charAt(i)+shiftValue));
}
System.out.println();
for(int i=307; i < 348; i++) {
System.out.print((char)((int)ciphertext.charAt(i)+shiftValue));
}
System.out.println();
for(int i=348; i < ciphertext.length(); i++) {
System.out.print((char)((int)ciphertext.charAt(i)+shiftValue));
}
//System.out.print((char)((int)ciphertext.charAt(1)+shiftValue));
//System.out.print((char)((int)ciphertext.charAt(2)+shiftValue));
//System.out.print((char)((int)ciphertext.charAt(3)+shiftValue));
//System.out.print((char)((int)ciphertext.charAt(4)+shiftValue));
//System.out.print((char)((int)ciphertext.charAt(5)+shiftValue));
//System.out.println();
}
} // end main
// end class Assign1
如果爲'ciphertext'包含一個短得多的字符串,只顯示不起作用的部分,那麼您的示例將更容易閱讀。你也可以刪除所有的for循環。 –
你需要在紙上逐步寫出你的邏輯,找出你如何循環訪問字符串。如果你在紙上做這個,你會完全循環七次嗎?不,我不這麼認爲。你只需循環**一次**。所以在這裏做同樣的事情。 –