2016-04-15 31 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

相關問題