凯撒密码C语言用ASCII码,凯撒密码帮助ASCII循环

我想创建一个凯撒密码,我有输入作为程序中的硬代码。当我运行该程序时,它的工作原理是,但应该是“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

+1

如果为'ciphertext'包含一个短得多的字符串,只显示不起作用的部分,那么您的示例将更容易阅读。你也可以删除所有的for循环。 –

+1

你需要在纸上逐步写出你的逻辑,找出你如何循环访问字符串。如果你在纸上做这个,你会完全循环七次吗?不,我不这么认为。你只需循环**一次**。所以在这里做同样的事情。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值