我的代码有问题。 该程序正在查找每个密码,包含1个字母和3个字母。 密码用2个字母,程序只能找到密码“11”。 同样的方式,5个字母只找到“11111”。 用4/6字母,程序没有找到任何密码。
代码中有很多“if”抱歉这个烂摊子但这是我想要创建密码查找器的唯一方法。(该程序是一个练习的个人项目)
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);
}
}
答案 0 :(得分:1)
如何在没有重复的情况下再次编写它?
提示:首先将6个arrayn int
变量替换为单个int[]
变量
提示#2:重新开始比通过修改此代码尝试重构更好。 (如果你准确地重构了一个带有bug的程序,你最终得到了另一个具有相同错误的程序......可能是错误的结构。)