Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编码密码_Java - Fatal编程技术网

Java 编码密码

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();

我有问题。我想用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();
    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)