繁体   English   中英

字符串替换不适用于for循环 - Java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM