【发布时间】:2015-10-04 23:58:23
【问题描述】:
我的代码有问题。 该程序正在查找每个包含 1 个字母和 3 个字母的密码。 2个字母的密码程序只能找到密码“11”。 同样的方式,5个字母只找到“11111”。 使用 4/6 个字母的程序找不到任何密码。
带有很多“如果”的代码对混乱感到抱歉,但这是我正在考虑创建密码查找器的唯一方法。(该程序是用于练习的个人项目)
package passwordfind10num;
import java.util.Scanner;
public class Passwordfind10num {
public static void main(String[] args) {
char[] charArray = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z', '!', '@', '#', '$', '%', '^', '&', '*',
'(', ')', '_', '-', '+', '=', '\\', '|', ',', '<', '>', '/',
'?', '~' };
Scanner in = new Scanner(System.in);
System.out.println("Enter a password");
String password = in.next();
String found = "";
int array = -1;
int array2 = -1;
int array3 = -1;
int array4 = -1;
int array5 = -1;
int array6 = -1;
while (!found.equals(password)) {
if (array5 == 83) {
array6++;
array5 = 0;
array4 = 0;
array3 = 0;
array2 = 0;
array = 0;
found = String.valueOf(charArray[array6] + charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else if (array4 == 83) {
array5++;
array4 = 0;
array3 = 0;
array2 = 0;
array = 0;
if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else if (array3 == 83) {
array4++;
array3 = 0;
array2 = 0;
array = 0;
if (array6 == -1 && array5 == -1)
found = String.valueOf(charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else if (array2 == 83) {
array3++;
array2 = 0;
array = 0;
if (array6 == -1 && array5 == -1 && array4 == -1)
found = String.valueOf(charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1 && array5 == -1)
found = String.valueOf(charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else if (array == 83) {
array2++;
array = 0;
if (array6 == -1 && array5 == -1 && array4 == -1
&& array3 == -1)
found = String
.valueOf(charArray[array2] + charArray[array]);
else if (array6 == -1 && array5 == -1 && array4 == -1)
found = String.valueOf(charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1 && array5 == -1)
found = String.valueOf(charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
} else {
array++;
if (array6 == -1 && array5 == -1 && array4 == -1
&& array3 == -1 && array2 == -1)
found = String.valueOf(charArray[array]);
else if (array6 == -1 && array5 == -1 && array4 == -1
&& array3 == -1)
found = String
.valueOf(charArray[array2] + charArray[array]);
else if (array6 == -1 && array5 == -1 && array4 == -1)
found = String.valueOf(charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1 && array5 == -1)
found = String.valueOf(charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else if (array6 == -1)
found = String.valueOf(charArray[array5]
+ charArray[array4] + charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
else
found = String.valueOf(charArray[array6]
+ charArray[array5] + charArray[array4]
+ charArray[array3])
+ String.valueOf(charArray[array2])
+ String.valueOf(charArray[array]);
}
}
System.out.println("password found:" + " " + found);
}
}
【问题讨论】:
-
请避免发布代码链接,而是发布带有您的问题的代码,这是我这次为您所做的事情。
-
您的代码看起来有很多不必要的重复和不必要的复杂性,这让我们很难理解,也很难让您和我们调试。我要做的第一件事是重构和简化。或者更好的是,把它扔掉重新开始。
-
我一直在为 3 个字母编写相同的程序,并且效果很好。代码:pastebin.com/fZKpLXuf 也许它可以帮助你。我试图将程序扩展到 6 个字母......我怎样才能在没有重复的情况下再次编写它?我必须用用户写的 1/2/3/4/5/6 检查每个可能的密码..
-
正确格式化它可能帮助一点。
标签: java