package codeCracker;
public class CodeCracker {
private String encrypt;
private int encry;
public CodeCracker(String encryptmelong) {
encrypt = encryptmelong;
}
public String idolnum() {
String in;
in = encrypt;
in = in.replaceAll("\\D+", "");
encry = Integer.valueOf(in);
encrypt = encrypt.replace(in, "");
// System.out.println(encry);
return in;
}
public String encrypt() {
// encrypt+=encry;
String encrypted = "";
String charen = "";
for (int i = 0; i < encrypt.length(); i++) {
charen += encrypt.charAt(i);
// System.out.println(charen.charAt(i));
}
for (int i = 0; i < charen.length(); i++) {
System.out.println(encry);
int temp = Integer.parseInt(idolnum());
System.out.println("" + temp + " " + (int) encrypt.charAt(i));
temp = (int) encrypt.charAt(i) + temp;
encrypted = encrypted + (char) temp;
// System.out.println(encrypted.charAt(i));
}
return encrypted;
}
public String toString() {
return encrypt();
}
public static void main(String[] args) {
CodeCracker code = new CodeCracker("5 encryptme");
System.out.println(code);
}
}
我对加密有疑问。该程序应该接收一个字符串和一个数字,并用这个数字增加每个字符。这不起作用。它正确接收数字但不正确添加字符。我也在线程“main”中收到异常错误:输入字符串:“”
Exception in thread "main" java.lang.NumberFormatException: For input string: "" at
Java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at
java.lang.Integer.parseInt(Integer.java:504) at
java.lang.Integer.valueOf(Integer.java:582) at
codeCracker.CodeCracker.idolnum(CodeCracker.java:15) at
codeCracker.CodeCracker.encrypt(CodeCracker.java:34) at
codeCracker.CodeCracker.toString(CodeCracker.java:44) at
java.lang.String.valueOf(String.java:2854) at
java.io.PrintStream.println(PrintStream.java:821) at
codeCracker.CodeCracker.main(CodeCracker.java:50)
答案 0 :(得分:1)
这不好:
for (int i = 0; i < charen.length(); i++) {
System.out.println(encry);
int temp = Integer.parseInt(idolnum());
System.out.println("" + temp + " " + (int) encrypt.charAt(i));
temp = (int) encrypt.charAt(i) + temp;
encrypted = encrypted + (char) temp;
// System.out.println(encrypted.charAt(i));
}
你在for循环中多次调用idolnum()
,包括从原始字符串中提取数字字符串之后,所以当你第二次这样做时,你得到{{1}试图解析“”。而不是这样做,只需调用NumberFormatException
一次,然后再调用for循环。然后每当需要加密int时使用encry int。
请注意,如果这是我的项目,我会以不同的方式组织它。我只将加密int传递给类,然后允许它加密和解密传递给它的任何字符串。例如:
diolnum()