【发布时间】:2013-10-07 04:09:27
【问题描述】:
我想实现一个凯撒密码移位,将字符串中的每个字母增加 3。
我收到此错误:
possible loss of precision required char; found int
到目前为止,这是我的代码:
import java.util.Scanner;
import java.io.*;
public class CaesarCipher
{
public static void main (String [] args) {
char[] letters = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z'};
char[] message = "onceuponatime".toCharArray();
char[] eMessage = new char[message.length];
char shift = 3;
//encrypting message
for(int i = 0; i <= message.length; ++i)
{
eMessage[i] = (message[i] + shift) % (char) letters.length;
System.out.println(x);
}
}
}
是什么导致了这个错误?如何实现凯撒密码移位以将字符串中的每个字母增加 3?
【问题讨论】:
-
旁注:您的代码似乎没有使用
import语句,因此您应该删除它们。 -
我看到其他错误,例如“eMessage[i] = (message[i] + shift) % (char) letters.length;”错误 - 类型不匹配:无法从 int 转换为 char,这在 System.out.println(x) 中很明显;这里 x 是未定义的。首先尝试删除这些错误...
标签: java encryption cryptography caesar-cipher