我的密码生成器正在生成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条答案
按热度按时间iyr7buue1#
把钥匙拿出来
€
在symbols
字符串。它不是ascii字符,所以它被编码为utf-8,而utf-8在您的控制台上没有正确显示。明确地,
€
是unicode字符U+20AC
,在utf-8中编码为E2 82 AC
. 标准dos字符集(代码页437)将这些字节解释为字符Γé¼
.为了避免编码问题,应该使用可打印的ascii字符(0x20到0x7e)。
f8rj6qna2#
这是因为你有
€
非asci的符号。如果您的终端不支持unicode,它将显示“奇怪”。