java - 将字符串中的随机整数分配给字符

标签 java arrays string random character

所以我试图在java中制作一个字谜工具,在其中插入一个单词/字符串,它会为该单词生成一个字谜。可能有比我即将展示的更简单或更好的方法来做到这一点,但我仍然很好奇。这就是我想做的:

假设这个词是:苹果

我想要做的是为该字符串中的每个字符分配一个 randomInt(100)。举个例子吧

a - 35、p - 54、p - 98、l - 75、e - 13

之后,我希望我的程序将数字从最小到最大排序,然后用数字指定的字符(从最小到最大)打印"new"字符串。就我而言,字谜将是: eaplp

总而言之,我遇到的问题是如何从字符串数组中为一个字符分配一个随机数,而不需要将该字符实际更改为该数字,然后将新修改的字符串打印出来,例如就像我上面说的那样。伪代码或真实代码会很棒。

谢谢

最佳答案

使用 TreeMap<Integer, Character> 。基本思路如下:

TreeMap<Integer, Character> myMap = new TreeMap<Integer, Character>();
for (int i = 0; i < myString.length(); i++) {
  myMap.put((int)(Math.random() * 100), myString.charAt(i));
}

for (Map.Entry<Integer, Character> entry : myMap.entrySet()) {
  System.out.print(entry.getValue());
}
System.out.println();

TreeMap 自动按键对条目进行排序;因此,您不必执行单独的排序。

<小时/>

编码字谜的一种更简单的方法是将字符串转换为字符列表,然后使用 Collections.shuffle() 。基本思想:

List<Character> myLst = new ArrayList<Character>(myString.toCharArray());
Collections.shuffle(myLst);
for (Character c : myLst)
  System.out.print(c);
System.out.println();

上面可能存在一些编译错误;我写的时候没有检查,但是这个过程应该可以工作。

关于java - 将字符串中的随机整数分配给字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31822485/

相关文章:

java - 发送 HTTP 请求的客户端 stub

java - Java和Solr中的Url编码问题

java - 使用 for 循环缩放输出

javascript - 在 javascript 数组中查找 NaN 的索引

regex - 将数据框元素转换为R中的字符串

c - C字符串困惑

java - 为什么 findbugs 在此代码中抛出空指针取消引用?

java - 程序仅输出数组列表中的最后一个元素 - Java

python - PyOpenCL 在内核代码中索引 3D 数组

java - 如何使用 toCharArray() 交换 java 字符串中的 2 个字母?