我的密码生成器正在生成Gamma符号和分数。我如何解决它?

时间:2017-07-14 17:33:29

标签: java passwords generator

我的密码生成器正在生成Gamma符号和分数...我该如何解决?

它有时很好用,但有时它会生成Gamma符号和分数。 他们希望我提供更多详细信息,但这真的是......

我在想,也许我可以将数字的类型更改为int,但我并不十分自信会工作。

这只是为了好玩......我正在努力学习Java,而这篇文章是我正在玩的东西...... 您提供的任何帮助都会很棒! :-) 谢谢!

import java.util.Random;

public class PasswordGenerator 
{
  public static void main(String[] args)
  {
    int length = 10;
    System.out.println(generatePswd(length));
  }
  static char[] generatePswd(int len)
  {
    System.out.println("Your Password:");
    String charsCaps = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String chars = "abcdefghijklmnopqrstuvwxyz";
    String nums = "0123456789";
    String symbols = "!@#$%^&*_=+-/€.?<>)";

    String passSymbols = charsCaps + chars + nums + symbols;
    Random rnd = new Random();

    char[] password = new char[len];
    int index = 0;
    for (int i = 0; i < len; i++) 
    {
        password[i] = passSymbols.charAt(rnd.nextInt(passSymbols.length()));

    }
    return password;
  }
}

2 个答案:

答案 0 :(得分:2)

取出字符串中的symbols。它不是ASCII字符,因此它被编码为UTF-8,但未在控制台上正确显示。

具体来说,是unicode字符U+20AC,它以UTF-8编码为E2 82 AC。标准DOS字符集(code page 437)将这些字节解释为字符Γé¼

为避免编码问题,您应该坚持使用可打印的ASCII字符(0x20到0x7E)。

答案 1 :(得分:1)

之所以会发生这种情况是因为您的lazy val router: Router = { // add the prefix string in local scope for the Routes constructor val prefix: String = "/" val v1Routes = wire[v1.Routes] wire[Routes] } 符号是非ASCI。如果你的终端不支持unicode,它将显示为&#34;奇怪的&#34;。