輸入一段英文字符電文,以回車結束輸入,對該電文進行加密,將電文中的字母 變為其后的第 3 個字母,最后的三個字母 x, y, z 變成 a, b, c。
uj5u.com熱心網友回復:
定義一個字符陣列char alp[] = {‘a’, ‘b’,...,’y’, ‘z’};
遇到字母則取回圈下標的字母
比如 char c = ‘x’
加密后變為 c = alp[(3+(c-‘a’))%26];
uj5u.com熱心網友回復:
可以詳細些嗎?
uj5u.com熱心網友回復:
接收字串后轉字符陣列,進行次數為長度減3的回圈,每個下標位置的元素+=3,回圈結束后把最后的xyz變為abc,再轉為字串uj5u.com熱心網友回復:
接收字串后轉字符陣列,進行次數為長度減3的回圈,每個下標位置的元素+=3,回圈結束后把最后的xyz變為abc,再轉為字串uj5u.com熱心網友回復:
這幾把垃圾服務器回個訊息都卡,管理倒洗掉的挺快uj5u.com熱心網友回復:
import java.util.Scanner;class Test{
public static void main(String[] args){
String str="axy";
String strs="";
for(int x=0;x<str.length();x++){
char tem= str.charAt(x);
if(tem=='x'){
strs+='a';
}else if(tem=='y'){
strs+='b';
}else if(tem=='z'){
strs+='c';
}else{
strs+=(char)(tem+3);
}
}
System.out.println(strs);
}
}
uj5u.com熱心網友回復:
這個叫做“凱撒加密”,你把字母表抽象為一個倍訓就能理解了。或者你想想鐘表,晚上11點過后三個小時是幾點?uj5u.com熱心網友回復:
public class Sample {
public static void main(String[] args) {
String s = "12345abcdefghijklmnopqrstuvwxyz67890";
StringBuilder buf = new StringBuilder();
for (char c : s.toCharArray()) {
if (c>='a' && c<='z') { //字母+3后對26個字母取模就得到當前字母的下標位置,再+'a'就得到當前字母
buf.append((char)((c-'a'+3)%26 + 'a')); //取模是為了超過26個字母后又重新回傳頭來定位字母的位置
//比如第27個字母,27%26==1,就相當于回到第1個字母
} else {
buf.append(c);
}
}
System.out.printf("加密前:%s\n", s);
System.out.printf("加密后:%s\n", buf);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114704.html
標籤:Java相關
上一篇:新手求助!
下一篇:AnonymousAuthenticationToken cannot be cast to OAuth2Authentication
