由于某些原因,此代码无效。
public void actionPerformed(ActionEvent e) {
Random random = new Random();
int randomChar = random.nextInt((23 - 0) + 1);
for(int x = 23;x > 0;x-- ) {
String text;
text = original.getText();
text = text.toLowerCase();
text = text.replace(alphabet[x], alphabet[randomChar]);
newText.setText(text);
}
只是为了清除原始内容和newText是JTextField,而alphabet是带有-z的char数组。
现在,当我运行它时,它应该通过一个随机的字符替换每个字符,从Z开始到A结束但是它只是给我完全相同的字符串,我只是转换为小写。
值得注意的是,如果我更换
text = text.replace(alphabet[x], alphabet[randomChar]);
使用
text = text.replace(alphabet[0], alphabet[randomChar]);
将一堆A放入输入框,它确实将它们改成随机字母。 EG:
aaaa input
llll output
or gggg output
如果我有一个变量,它就不起作用。
顺便说一下,其余的代码并不重要,它都是声明变量并设置GUI。
非常感谢任何帮助!
答案 0 :(得分:2)
除了在循环内移动随机字符生成(如@CIsForCoocckies所建议),您还需要在循环外移动getText()
和setText()
调用(因为每个在循环运行的时间,你从原始文本开始,所以最多一种类型的字符最终将被替换,无论循环迭代多少次。
答案 1 :(得分:1)
你的randomchar在循环之前用一些char设置然后所有的chars被替换为所谓的char所以 - " yourstring"成为" xxxxxxxxxx"其中x = randomchar
答案 2 :(得分:0)
除了另外两个答案,我还想在for循环中添加评论:
for(int x = 23;x > 0;x--)
当x == 0时,你不会进入循环,这意味着你的字母数组中的第一个字符不会被考虑替换。
如果您已经拥有字母数组,并希望用随机字符替换每个字符,为什么不考虑使用:
for (int x = 0; x < alphabet.length; x++){
//your code here
}
这应该比硬编码更好