有没有办法在我的字符串中单独递增每个字母?

Is there a way to increment each letter individually in my string?

提问人:Riley Morris 提问时间:3/24/2021 最后编辑:Federico klez CullocaRiley Morris 更新时间:3/24/2021 访问量:42

问:

我正在尝试通过这样做来“猜测”密码。

这就是我目前尝试增加它的方式:

while (guess != password) {
    while (guess.charAt(j) != password.charAt(j)) {
        (guess.charAt(j) + 1);
        if (guess.charAt (j) == password.charAt(j)) {
            j++;
        }
    }
}
Java 字符串 循环 变量赋 值运算符

评论

1赞 Backflip 3/24/2021
字符串是不可变的。将字符串转换为字节数组 byte[],然后您可以单独更改任何字符。
0赞 tobias_k 3/24/2021
如果你可以测试密码的各个字符,那么猜测就没有意义了,对吧?此外,对于 ,将无法正常工作,更不用说guess != passwordStringchar[]

答:

0赞 Tore 3/24/2021 #1

这里有一种蛮力方法可以做到这一点。正如评论中所指出的,你可以从将 String 转换为 char[] 开始,但实际上没有意义,因为你总是知道答案。

https://replit.com/@notoreous/guesspwd#Main.java

class Main {
  public static void main(String[] args) {
    String password = "password";

    String guess = guessPassword(password);

    System.out.println("I guess: " + guess);
    System.out.println("Actual: " + password);
  }

  private static String guessPassword(String password) {
    return new String(guess(new char[password.length()], password.toCharArray()));
  }

  private static char[] guess(char[] guess, char[] password) {
    for (int i = 0; i < password.length; i++) {
      if (guess[i] == password[i]) {
        continue;
      } else {
        guess[i]++;
        i--;
      }
    }
    return guess;
  }
}