Java 编码密码
我有问题。我想用java做密码,它根据ASCII表输入字符串中每个字符的步数。铭文应该只有字母(大小)和空格(编码和解码)。这是我的代码,输出不打印“z”,编码(第一部分,使用真布尔值)从unicode生成奇怪的字符Java 编码密码,java,Java,我有问题。我想用java做密码,它根据ASCII表输入字符串中每个字符的步数。铭文应该只有字母(大小)和空格(编码和解码)。这是我的代码,输出不打印“z”,编码(第一部分,使用真布尔值)从unicode生成奇怪的字符 static String Cezar(String tekst, boolean kodek, byte ile){ char c; int i=0; int roboczy=0; String zwracany = new String();
static String Cezar(String tekst, boolean kodek, byte ile){
char c;
int i=0;
int roboczy=0;
String zwracany = new String();
if(kodek==true){
int odchyleniepo122, odchylenieprzed65=0;
while(i<tekst.length()){
//if (c<65)
//c=65;
c=tekst.charAt(i++);
/*if (c>90 && c<97)
c=97;
if (c>122)
c=122;
if(c==32)
c=65;*/
roboczy = (int) c;
roboczy = roboczy + ile;
/*if(roboczy<0){
roboczy=127;
}
if(roboczy>127){
roboczy=0;
}*/
if (roboczy>90 && roboczy<97){
}
if (roboczy>122){
odchyleniepo122=roboczy-122;
//odchylenieprzed122=122-roboczy2;
roboczy=65+odchyleniepo122;
}
if (roboczy<65 && roboczy!=32){
odchylenieprzed65=65-roboczy;
roboczy=122-odchylenieprzed65;
}
if (roboczy==32)
roboczy=65;
c=(char)roboczy;
zwracany=zwracany+c;
}
}
if(kodek==false){
int odchylenieprzed65 = 0;
while(i<tekst.length()){
//if (c<65)
//c=65;
c=tekst.charAt(i++);
/*if (c>90 && c<97)
c=97;
if (c>122)
c=122;
if(c==32)
c=65;*/
roboczy = (int) c;
//roboczy2=roboczy;
roboczy = roboczy - ile;
/*if(roboczy<0){
roboczy=127;
}
if(roboczy>127){
roboczy=0;
}*/
if (roboczy>90 && roboczy<97)
roboczy=97;
if (roboczy>122)
roboczy=122;
if(roboczy<65){
odchylenieprzed65=65-roboczy;
roboczy=122-odchylenieprzed65;
}
if(roboczy==65)
roboczy=32;
c=(char)roboczy;
zwracany=zwracany+c;
}
}
return zwracany;
}
public static void main(String[] args) {
String wynik1;
byte ilosc = 126;
wynik1=Cezar("la la la", true, ilosc);
//wynik1=Cezar(wynik1, false, ilosc);
System.out.println(wynik1);
}
静态字符串Cezar(字符串tekst、布尔kodek、字节ile){
字符c;
int i=0;
int-roboczy=0;
字符串zwracany=新字符串();
如果(kodek==true){
int-odchyleniepo122,odchylenieprzed65=0;
while(i90&&roboczy122){
odchyleniepo122=roboczy-122;
//odchylenieprzed122=122-roboczy2;
roboczy=65+odchyleniepo122;
}
如果(roboczy更好的解决方案是定义字母表中可用的字符的常量数组(或者只是一个字符串,因为它是字符[]的实现),例如:
然后,指定字符的替换将类似于:
char substitutionChar = alphabet.charAt(alphabet.indexOf(charToSubstitute) + offset)
当我们在一次替换中处理字母字符串两次时,它会影响性能,但会大大提高代码的可读性和可管理性
我还建议您格式化代码。只需在IDE中使用一些自动化工具,无论您认为它有多无用,它都会真正帮助您:d可能与您尝试调试时发生的情况重复?^当我尝试调试时,程序刚刚完成输出:±e±e±-当我取消注释解码函数时,它会生成co正确的回答:Lalayes,我会这样做的…我厌倦了在ascii表上立足的想法很高兴我能帮忙,请将我的答案标记为接受。这将有助于我的堆栈溢出职业发展:D
char substitutionChar = alphabet.charAt(alphabet.indexOf(charToSubstitute) + offset)