[英]String replace isn't working in for loop - Java
由于某种原因,此代码不起作用。
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是一个带有az的char数组。
现在,当我运行它时,它应该通过一个随机的字符替换每个字符,从Z开始到A结束但是它只是给了我完全相同的字符串,我回来了,只是转换为小写字母。
值得注意的是,如果我更换
text = text.replace(alphabet[x], alphabet[randomChar]);
同
text = text.replace(alphabet[0], alphabet[randomChar]);
并将一堆A放入输入框,它确实将它们变成随机字母。 例如:
aaaa input
llll output
or gggg output
如果我有一个变量,它就行不通。
顺便说一下,其余代码并不重要,它都是声明变量并设置GUI。
任何帮助深表感谢!
除了在循环内移动随机字符生成(如@CIsForCoocckies所建议的),你还需要在循环外移动getText()
和setText()
调用(因为每次循环运行时,你都会重新开始与原来的文本,最多一个样的性格将在年底前被取替,无论多少次的循环迭代。
你的randomchar在循环之前用一些char设置然后所有的char都被替换为所谓的char所以 - “yourstring”变成“xxxxxxxxxx”,其中x = randomchar
除了另外两个答案之外,我还想在for循环中添加注释:
for(int x = 23;x > 0;x--)
当x == 0时,您将不会进入循环,这意味着您的字母数组中的第一个字符将不会被考虑替换。
如果你已经有了字母数组,并希望用随机字符替换每个字符,为什么不考虑使用:
for (int x = 0; x < alphabet.length; x++){
//your code here
}
这应该比硬编码更好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.