以下是我的代码:
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):
根据上面的代码,我的预期结果是:
Initial : a*b
Result : 100* 200
但实际结果给了我结果:
Initial : a*b
Result : a*b
我怀疑出现了什么问题,因为编译器没有显示任何错误。
答案 0 :(得分:7)
这是因为您从先前的循环迭代中丢弃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);
}
由于您的代码始终从原始文本开始,因此仅当text
包含字母z
时才会看到效果。例如,x*z
会产生x*1000
(或其他一些随机数)。
答案 1 :(得分:1)
您替换text
字符串中的变量并将结果保存在latestEqn
中,但是下一次迭代会再次替换编辑后的值。只需摆脱latestEqn
变量:
String text = "a*b";
for (c = 'a'; c <= 'z'; c++) {
int randomNumber = Generator.nextInt(10000);
String convertToString = String.valueOf(randomNumber);
String sequence = String.valueOf(c);
text = text.replaceAll(sequence, convertToString);
}