【问题标题】:How to generate a random numeric string + random char string and combine?如何生成随机数字字符串+随机字符字符串并组合?
【发布时间】:2014-02-09 22:14:12
【问题描述】:

我要做的是生成一个随机的数字字符串 E.G 2645237 和一个字符在 A-Z E.G. 范围内的字符串中。 W 并将两个字符串组合成 2645237W。我可以生成一个随机数没问题。我坚持的是: 1. 生成一个随机字符作为字符串。 2. 将两个字符串组合成一个字符串。要明确它的用途是为了在我的评分中获得一些额外的学分。像往常一样,我不是在寻找完整的答案。一些伪代码或工作示例会很好,但我想要最终的“A-HA!”时刻要我自己做。最后一个参数。这个最终结果(一个字符串)需要以不同的方式生成 50 次(我可以这样做),然后用作一种密码。 (为了复制一个 PPS 号码,添加的字符是让我的全班都难过的那个位)。

我不想欺骗我的编码答案,只是停留在这个问题上(我们都去过那里)

【问题讨论】:

  • 线索:查看 65 位以上的 ascii 字符...
  • char 数据类型实际上是用整数表示的。找到所需字符的整数范围,在该范围内生成一个随机 int,将其转换为 char。从那里将 int 和 char 转换为字符串并将它们组合起来应该很容易。
  • 嘿工程师,你能指出我可以在哪里学习 ascii 字符的正确方向吗,我只在一个低于平均水平的导师的慢节奏课堂上学习了大约 3 个月(显示他的工作并期望我们只从原始代码中学习)。
  • +1 用于询问指针但不是最终答案。 :)
  • http://www.asciitable.com/。只是让你开始 - 65 = A,66 = B,等等......

标签: java string random char


【解决方案1】:

您可以简单地通过执行'a'(或大写的'A')生成一个随机字符,然后生成一个从0到25的随机数并将其添加到其中。即'a'+3'd'。请注意使用单引号字符表示这是 char 文字,而不是双引号表示 String 文字。

然后可以将该随机字符附加到字符串中。 StringBuilder 会很容易地为您完成,我不确定 String + 运算符会用它做什么。

【讨论】:

  • 比如说我输入了这个伪代码(在IDE中自然变成了正确的代码).. String letter = 'A'+(RNG);示例:字符串字母 = 'A'+(14);输出会变成另一个字母吗?这个例子的输出应该是 O,对吧?
  • 是的。 char加法改变了char的值,与int 65+14给出79'A'+14给出字母79完全相同。这与连接字符串的String 中的+ 不同。
  • 好的,我用你的方法来处理字符('A'+3)。然后我制作了一个 7 位数字(现在硬编码以节省时间)并使用 Rakesh KR 的方法(myChar+""+Num)将它们组合起来,因为这对我来说是一个严重的问题。如果不是太麻烦的话,我可以再问一件事吗?我会把它放在一个单独的评论中。
  • 我创建字符串 4534343W 并将代码放入一个循环中(创建 50 个字符串并将它们打印到底部。我需要将 50 个数字放在一个数组中。我是否在同一方法作为随机数生成器还是我在 Main 中声明它?请记住,我需要将数组调用到另一个方法中,以允许用户检查代码是否与 50 个中的一个匹配。
  • 我会支持你的帮助(非常感谢),但遗憾的是我需要另外 7 个代表这样做
【解决方案2】:

试试,

Random rn        = new Random();
int    range     = 9999999 - 1000000 + 1;  
int    randomNum =  rn.nextInt(range) + 1000000;  // For 7 digit number
System.out.println(randomNum);

Random rc = new Random();
char   c  = (char)(rc.nextInt(26) + 'A');
System.out.println(c);

String str = randomNum+""+c;        
System.out.println(str);

str 打印类似1757217Y

【讨论】:

  • 好吧,这实际上让我有点生气,并不是你给了我代码(一个工作示例很棒!)但是我有一些与该代码非常相似的东西,但我无法将这两个变量组合到一弦。错误说 char 不能被取消引用
  • 嘿,Rakesh,您能解释一下代码中的这一行是如何工作的吗? (char)(rc.nextInt(26) + 'A');我知道 rc.nextInt(26) 将值 1-25 添加到 'A' 以给出一个新字母,但是 rc.nextInt() 是如何工作的?我猜它会为 26 范围内的下一个 int 创建一个随机 int?
  • @RakeshKR 谢谢,我很难找到信息来源 :)
【解决方案3】:

要生成字母并附加到您的数字序列上:

String msg1 = "random number sequence";
Random gen = new Random();
char c = (char) (65 + gen.nextInt(26));
StringBuilder sb = new StringBuilder();
sb.append(msg1);
sb.append(c);
String result = sb.toString();
System.out.println(result);

顺便说一下,65是字母'A'的ASCII码,gen.nextInt(26)生成一个介于0和25之间的数字,也就是说,我们有一个介于65和90之间的数字,即字母'A' -'Z' 在 ascii 表中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多