package password;
import java.util.Scanner;
public class JiaMi {
String str;
char str1[];
//接受字符串
public String inputString(String str) {
this.str= str;
return this.str;
}
public void chuShiHua() {
char str1[] = str.toCharArray();
}
         //加密
public void jiaMi() {
for (int i = 0; i < str1.length; i++) {
if(str1[i]>='a' && str1[i] <='w') {
str1[i] +=3;
}else if(str1[i]>'w') {
str1[i]-=23;
}/*else if(str[i] == 'y') {
str[i]='b';
}else if(str[i] == 'z' ) {
str[i] ='c';*/
/*}*/
}
System.out.println("加密后的字符串为:");
                           for (int i = 0; i < str1.length; i++) {
System.out.print(str1[i]);

}
}
//解密
public void jieMi() {
for (int i = 0; i < str1.length; i++) {
if(str1[i]>='d' && str1[i]<='z') {
str1[i] -=3;
}else if(str1[i]<'d'){
str1[i]+=23;
}
}
System.out.println("解密后的字符串为:");
for (int i = 0; i < str1.length; i++) {
System.out.print(str1);
}
}
//主方法测试
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
JiaMi jm = new JiaMi();
System.out.println("请输入一个字符串:");
String str = input.next();
jm.inputString(str);
System.out.println("请选择:\n 1.加密  2.解密");
int choice = input.nextInt();
if(choice ==1) {
jm.jiaMi();
}else if(choice ==2) {
jm.jieMi();
}
}
}这个程序加密过程正确 我是把字符串转换成  字符数组然后比对,加密过程无问题
但是解密直接报错
求解!!
数组这我有点乱,我定义了一个成员变量str1[]  想通过加密步骤把加密的数组传到成员变量str1[] 里
然后 解密步骤直接用这个str1[]里的字符进行解密。  
现在我写的代码明显是不对的;求解;
顺便问下 用  toCharArray()方法分解后的字符如何在重新组合成字符串?

解决方案 »

  1.   

    String s = new String(char[] c)解密算法自己应该再核对一下,可以先只打印一个字符作为示例
      

  2.   


    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;import java.util.Scanner;class JiaMi {
    String str;
    char str1[]; // 接受字符串
    public String inputString(String str) {
    this.str = str;
    return this.str;
    } public void chuShiHua() {
    str1 = str.toCharArray();
    } // 加密
    public void jiaMi() {
    chuShiHua();
    for (int i = 0; i < str1.length; i++) {
    if (str1[i] >= 'a' && str1[i] <= 'w') {
    str1[i] += 3;
    } else if (str1[i] > 'w') {
    str1[i] -= 23;
    }/*
     * else if(str[i] == 'y') { str[i]='b'; }else if(str[i] == 'z' ) {
     * str[i] ='c';
     */
    /* } */
    }
    System.out.println("加密后的字符串为:");
    for (int i = 0; i < str1.length; i++) {
    System.out.print(str1[i]); }
    } // 解密
    public void jieMi() {
    chuShiHua();
    for (int i = 0; i < str1.length; i++) {
    if (str1[i] >= 'd' && str1[i] <= 'z') {
    str1[i] -= 3;
    } else if (str1[i] < 'd') {
    str1[i] += 23;
    }
    }
    System.out.println("解密后的字符串为:");
    for (int i = 0; i < str1.length; i++) {
    System.out.print(str1[i]);
    }
    } // 主方法测试
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    JiaMi jm = new JiaMi();
    System.out.println("请输入一个字符串:");
    String str = input.next();
    jm.inputString(str);
    System.out.println("请选择:\n 1.加密 2.解密");
    int choice = input.nextInt();
    if (choice == 1) {
    jm.jiaMi();
    } else if (choice == 2) {
    jm.jieMi();
    }
    }
    }