gpt4 book ai didi

java - 用随机字符 java 替换具有最小指定 ASCII 数字的字符

转载 作者:行者123 更新时间:2023-12-01 09:13:50 24 4
gpt4 key购买 nike

我正在尝试将字符串中分配的最小 ASCII 数字的字符替换为在一定范围内生成的随机字符。

这是代码:

 import java.util.*;

public class TestMethod {

Random rn = new Random();
public synchronized void test(String st){
while(true){
char c = (char)rn.nextInt(((126-33)+1)+33);
int min = (int)st.charAt(0);
int index = 0;

for(int i=0; i<st.length(); i++){
if((int)st.charAt(i) < min){
min = (int)st.charAt(i);
index = st.indexOf(i);
}
}
String newst = st.substring(0, index) + c + st.substring(index+1, st.length());

try{
Thread.sleep(2000);
System.out.println(newst);
}catch(Exception e){
e.printStackTrace();
}

//checks if all characters equal to '~'
ArrayList<String> stArr = new ArrayList<String>();
stArr.add(newst);
for(String i : stArr){
if(i.length()-i.replace("~", "").length() == 0){
break;
}
}
}
}

}

我收到运行时错误:

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(Unknown Source)
at TestMethod.test(TestMethod.java:18)
at classA.run(classA.java:16)
at java.lang.Thread.run(Unknown Source)

在这一行:

String newst = st.substring(0, index) + c + st.substring(index+1, st.length());

我做错了什么?我刚刚开始尝试同步。

最佳答案

线路

index = st.indexOf(i);

应该是

index = i;

关于java - 用随机字符 java 替换具有最小指定 ASCII 数字的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40729719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com