我差不多完成了一个程序,它接受用户输入并加密消息然后显示回来。由于某种原因,我无法将字符串传递给我的加密方法并返回它。有谁知道我哪里出错了?
非常感谢任何回复的人!
public static String doEncryption(String s)
{
char alphabet[] = { '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 key[] = { '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', 'a' };
char encoded[] = new char[(s.length())];
String encrypted="";
int j=0;
for(int i=0; i<s.length(); i++){
//System.out.println(s.charAt(i));
boolean isFound = false;
j = 0;
while (j < alphabet.length && !isFound){
if (alphabet[j]==s.charAt(i)){
encrypted=encrypted+key[j];
isFound=true;
}
j++;
}
if(j>=alphabet.length){
encrypted=encrypted+s.charAt(i);
}
}
return (new String(encrypted));
}
public static void main(String args[])
{
String match = "QUIT";
String en = "";
System.out.println("Welcome to the Encoding Program!");
Scanner sc = new Scanner(System.in);
System.out.println("Enter the text you want encoded below. Type QUIT when finished. ");
en = sc.nextLine();
String trim = en.substring(0, en.indexOf("QUIT"));
doEncryption(trim.toLowerCase());
//String en = doEncryption(sc.nextLine().toLowerCase());
System.out.println("The text is encoded as: " + trim.toUpperCase());
sc.close();
}
}
答案 0 :(得分:2)
您的方法返回更新后的字符串,因此您在调用时希望使用该返回值。变化:
doEncryption(trim.toLowerCase());
到
String updatedValue = doEncryption(trim.toLowerCase());
如果您愿意,请重新使用trim
:
trim = doEncryption(trim.toLowerCase());
...然后使用updatedValue
或trim
来显示结果。
答案 1 :(得分:2)
只是因为你永远不会重新分配价值。
更改
doEncryption(trim.toLowerCase());
到
trim = doEncryption(trim.toLowerCase());
然后System.out.println("The text is encoded as: " + trim.toUpperCase());
将显示正确的值。
小心这一行
en.substring(0, en.indexOf("QUIT"));
如果&#34; QUIT&#34;它会抛出java.lang.StringIndexOutOfBoundsException
。不在字符串中。
我认为你希望程序执行直到&#34; QUIT&#34;输入,所以你需要循环,直到输入是&#34; QUIT&#34;。你的主要方法看起来像这样
String match = "QUIT";
String en = "";
System.out.println("Welcome to the Encoding Program!");
Scanner sc = new Scanner(System.in);
System.out.println("Enter the text you want encoded below. Type QUIT when finished. ");
do
{
en = sc.nextLine();
if(!en.toUpperCase().equals(match))
{
en = doEncryption(en.toLowerCase());
System.out.println("The text is encoded as: " + en.toUpperCase());
}
} while(!match.equals(en.toUpperCase()));
sc.close();
如果要退出,只需输入quit。