2016-04-15 28 views

回答

0
  1. 获得字符串的长度
  2. 得到2个不同的随机INT之间0和数字的字符串的长度:RAND1和RAND 2。
  3. 我想你应该将字符串转换为一个字符数组。
  4. 使用2个随机数进行数组交换。
  5. 将数组转换为字符串。
0

您可以使用以下方法使用StringBuilder。

String string="Your String"; 
int length=string.length(); 

Random rand=new Random(); 
int one=0; 
int two=0; 
/* 
generate two random indexes which are not equal to each other. 
*/ 
while(length>=2 && one==two){ 
    one=rand.nextInt(length); 
    two=rand.nextInt(length); 
} 

//use String builder and interchange the characeters. 
StringBuilder builder=new StringBuilder(string); 
builder.setCharAt(one,string.charAt(two)); 
builder.setCharAt(two,string.charAt(one)); 

String newString=builder.toString(); 
+0

对不起,是一种痛苦,但有没有办法做到这一点没有StringBuilder? –

+0

有一种方法。你连接子串并创建新的字符串。但是代码会有点复杂。在[this](http://stackoverflow.com/questions/6952363/replace-a-character-at-a-specific-index-in-a-string)问题 –

0

生成0之间的随机数索引1和索引2和(字符串-1的长度)

int index1= randomNumber1; 
int index2= randomNumber2; 

String str ="abcdef"; 
String charSwap1= str.substring(index1, index1+1); 
String charSwap2= str.substring(index2, index2+1); 
StringBuilder builder=new StringBuilder(); 
builder.append(str); 
builder.replace(index1,index1+1,charSwap2); 
builder.replace(index2,index2+1,charSwap1); 
System.out.println(builder.toString()); 
+0

这将返回String charSwap1 = str中的错误。 substring(index1,index1 + 1); String charSwap2 = str.substring(index2,index2 + 1);索引超出范围 –

+0

startIndex是包含性的,而endIndex是独占性的。它不应该返回任何错误,因为在您的情况下索引+ 1将是2,并且index2 + 1应该是6,它在字符串范围内。你是否遇到charSwap2或charSwap1错误?如果是charSwap2,则改为使用它。 str.substring(index2)如果它是最后一个字符。 – annu

相关问题