【发布时间】:2012-02-05 15:15:03
【问题描述】:
所以我正在用 Java 做一个简单的加密程序。用户输入一个字符串 (strTarget),然后将该字符串带到此函数。在 for 循环中,它应该获取字符的 ASCII 值,将其减少 4,然后将其返回到字符串(对字符串中的所有字符都这样做)。正如你看到我的朋友,我已经这样做了,但是,我不确定如何重建我希望返回的字符串(例如,如果用户输入'efg',返回的字符串应该是'abc')
所以,这是我根据建议得到的结果。我显然在 Menu 类中做错了什么,不确定它是什么。当我输入要加密的字符串时它停止工作。
import java.util.Scanner;
public class Menu {
public static String strTarget;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out
.println("Welcome to the encr/decr program");
System.out
.println("To encrypt a string, press 1, to decrypt a string, press 2");
int choice = in.nextInt();
if (choice == 1) {
System.out.println("Type the string you want to encrypt.");
strTarget = in.next();
System.out.println(Encrypt(strTarget));
}
if (choice == 2) {
System.out.println("Enter the string you want to decrypt.");
}
}
private static String Encrypt(String strTarget) {
// TODO Auto-generated method stub
int len = strTarget.length()-1;
String destination = "";
for (int i = 0; i<len; i++)
{
if (strTarget.charAt(i) != ' ')
{
char a = strTarget.charAt(i);
int b = (int) a;
b = strTarget.charAt(i)-4;
a = (char) b;
if ( b<70 && b>64)
{
b = strTarget.charAt(i)+26;
a = (char) b;
destination += a;
}
}
}
return destination;
} }
编辑:添加了完整的程序。
import java.util.Scanner;
public class Menu {
public static String strTarget;
public static String destination = "";
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Welcome to the encr/decr program");
System.out.println("To encrypt a string, press 1, to decrypt a string, press 2");
int choice = in.nextInt();
if (choice == 1) {
System.out.println("Type the string you want to encrypt.");
strTarget = in.next();
StringBuilder zomg = new StringBuilder(strTarget);
System.out.println(Encrypt(zomg));
}
if (choice == 2) {
System.out.println("Enter the string you want to decrypt.");
}
}
private static String Encrypt(StringBuilder zomg) {
// TODO Auto-generated method stub
int len = strTarget.length()-1;
for (int i = 0; i<len; i++)
{
if (strTarget.charAt(i) != ' ')
{
char a = strTarget.charAt(i);
int b = (int) a;
b = strTarget.charAt(i)-4;
a = (char) b;
destination += a;
if ( b<70 && b>65)
{
b = strTarget.charAt(i)+26;
a = (char) b;
destination += a;
}
}
}
System.out.println(destination);
return destination;
} }
我做了你所说的改变(我认为),它开始工作,但它没有按预期工作。给出一些似乎没有意义的结果(对于'A',它返回=,对于'V',它返回'V')。有什么建议吗?
【问题讨论】:
标签: java encryption