以下是我的代码:
char c;
Random Generator = new Random();
String text = FormulaArea.getText();
String latestEqn = "";
for(c='a'; c<='z';c++)
{
int randomNumber = Generator.nextInt(10000);
String convertToString = String.valueOf(randomNumber);
String sequence = String.valueOf(c);
latestEqn = text.replaceAll(sequence,convertString);
}
TextField1.setText(latestEqn):
Run Code Online (Sandbox Code Playgroud)
根据上面的代码,我的预期结果是:
Initial : a*b
Result : 100* 200
Run Code Online (Sandbox Code Playgroud)
但实际结果给了我以下结果:
Initial : a*b
Result : a*b
Run Code Online (Sandbox Code Playgroud)
我怀疑出现了什么问题,因为编译器没有显示任何错误.
这是因为您latestEqn从先前的循环迭代中丢弃.以下是如何解决它:
String latestEqn = text;
for(c='a'; c<='z';c++)
{
int randomNumber = Generator.nextInt(10000);
String convertToString = String.valueOf(randomNumber);
String sequence = String.valueOf(c);
latestEqn = latestEqn.replaceAll(sequence,convertString);
}
Run Code Online (Sandbox Code Playgroud)
由于您的代码始终从原始文本开始,因此只有text包含字母时才会看到效果z.例如,x*z会产生x*1000(或一些其他随机数).