Java 尝试将字符数组的元素转换为int时出错

Java 尝试将字符数组的元素转换为int时出错,java,arrays,numberformatexception,Java,Arrays,Numberformatexception,以下是我迄今为止使用的代码: public static String encrypt(String password) { String encrypted = null; char passChars[] = password.toCharArray(); int ascii[] = null; for(int i=0;i<passChars.length;i++) { ascii[i] = Integer.parseInt(String

以下是我迄今为止使用的代码:

public static String encrypt(String password) {
    String encrypted = null;
    char passChars[] = password.toCharArray();
    int ascii[] = null;
    for(int i=0;i<passChars.length;i++) {
        ascii[i] = Integer.parseInt(String.valueOf(passChars[i]));
        ascii[i] = ascii[i] + 17;
        passChars[i] = (char)ascii[i];
        encrypted = encrypted + String.valueOf(passChars[i]);
    }
    return encrypted;
}

我尝试过改变一些事情,比如改变它从char转换为int的方式,但似乎没有任何效果。。。我做错了什么?

如果您想通过将每个字符偏移一定量来加密字符串,那么直接执行以下操作:

String encrypted = null;
char passChars[] = password.toCharArray();
for (int i=0; i < passChars.length; i++) {
    passChars[i] += 17;
}
encrypted = new String(passChars);
请注意,在某些ASCII字符中添加17可能会导致无法打印的内容。现在还不清楚你想在这里实现什么;如果您想要系统地将密码加扰到其他字符中,那么我们可能必须使用模数进行换行。

这一行是错误的:

ascii[i] = Integer.parseInt(String.valueOf(passChars[i]));
您正在尝试将密码的字母转换为整数。无法保证密码仅由数字组成

相反,您可以执行以下操作:

ascii[i] = passChars[i] + 17;

直接。

使用有效大小初始化ascii[]否则您可能会得到索引越界异常,此程序将仅对密码作为数字字符串工作。

我想加密密码,以便将其存储在数据库中。不过这只是一个原型。。。感谢you@MilanJ下一步,您可以考虑基础64编码您的密码。除此之外,我们还可以讨论使用salt进行正式加密之类的问题。
ascii[i] = passChars[i] + 17;