0
我試圖用範圍內生成的隨機字符替換具有最小分配ASCII碼的字符。用隨機字符替換具有最小分配的ASCII碼的字符java
下面的代碼:
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; – Nosyara