所以我试图在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/