希望这可以帮助您解决问题。就目前而言,您
keyGen()相当于以下代码:
public String keyGen() { return "!!!!!!!!";}因为一旦进入最内部的
for循环,就立即返回该值。也许您想更改返回a的方法,
List<String>并在最里面的
for循环中将字符串添加到该列表,然后在所有
for循环之后返回该列表?这样,您可以遍历
main方法中的列表。
如果我算对了,那么会有93 ^ 8 =
5.595.818.096.650.401个不同的字符串。将所有这些存储在列表中是不好的建议。杜克林在评论中指出,为此最好使用习惯
Iterator<String>。
编辑
这是这种迭代器的实现:
import java.util.Arrays;import java.util.Iterator;public class BruteForceIterator implements Iterator<String> { private char min, max; private char[] current; private char[] last; private int reachedLast = 0; public BruteForceIterator(char min, char max, int length) { this.min = min; this.max = max; current = new char[length]; Arrays.fill(current, min); last = new char[length]; Arrays.fill(last, max); } @Override public boolean hasNext() { return reachedLast < 2; } @Override public String next() { String str = new String(current); for(int i = current.length - 1; i >= 0; i--) { char next = following(current[i]); current[i] = next; if (next != min) { break; } } if (Arrays.equals(current, last) || reachedLast > 0) { reachedLast++; } return str; } private char following(char in) { if (in < max) { return (char) (in + 1); } else { return min; } } @Override public void remove() { throw new UnsupportedOperationException("No with me, sir!"); } public static void main(String[] args) { BruteForceIterator bit = new BruteForceIterator('a', 'c', 3); while (bit.hasNext()) { System.out.println(bit.next()); } }}


