我希望这句话好像。这有什么不对,因为它给了我
java.lang.ArrayIndexOutOfBoundsException
package first;
import org.apache.commons.lang.RandomStringUtils;
public class reverseString2 {
public static void main(String []args){
String str = "The student so lazy";
String[] split = str.split(" ");
String middle = null;
StringBuilder output = new StringBuilder();
for (String s : split) {
middle = s.substring(1, s.length()-1 );
s = s.replace(middle,RandomStringUtils.random(5, middle));
output.append(s + " ");
}
System.out.println(output.toString());
}
}
答案 0 :(得分:1)
除了少于3个字符的单词外,您的代码适用于所有内容。您无法在第一个字符后启动并检索下一个0(或更少)字符。
答案 1 :(得分:1)
您需要复制并粘贴精确的堆栈跟踪。
我写了自己的随机方法,因为我没有这台机器上最好的设置,这就是我得到的:
import java.util.*;
class reverseString2 {
public static void main(String []args){
String str = "The student so lazy";
String[] split = str.split(" ");
String middle = null;
StringBuilder output = new StringBuilder();
for (String s : split) {
middle = s.substring(1, s.length()-1 );
s = s.replace(middle,random(5, middle));
output.append(s + " ");
}
System.out.println(output.toString());
}
static String random(int i, String s) {
char[] ca = s.toCharArray();
List<Character> list = new ArrayList<Character>();
for(char c : ca) list.add(c);
Collections.shuffle(list);
StringBuilder sb = new StringBuilder();
for(Character ch : list) sb.append(ch);
return sb.toString();
}
}
结果:
# 1: hide clone input 2 seconds ago
result: success time: 0.09s memory: 212416 kB returned value: 0
input: no
output:
The suntedt so lzay