2017-04-07 45 views
-2

我已經嘗試下面的代碼,但它顯示了一些錯誤..打印一個像AAA到ZZZ的模式開始像AAA AAB AAC .... AAZ ABA ABB ... ZZZ?

 String str="AAA"; 
     char[] ch=str.toCharArray(); 
     int length=str.length(); 
     for(int i=length-1;i>=0;i--) 
     { 
      for(int j=65;j<=90;j++) 
      { 
       System.out.println(str.replace(ch[i] ,(char)j)); 
      } 
     } 
+1

請包括你的具體錯誤。 –

+0

它運行良好。它只是不會產生你想要的輸出。 – QBrute

+0

與編碼問題相比,這更像是一個邏輯問題。我會在3個嵌套循環中增加每個字符 –

回答

3

所有你需要的是三個環路(每個字符的地方):

for(char c1 = 'A'; c1 <= 'Z'; c1++){ 
    for(char c2 = 'A'; c2 <= 'Z'; c2++){ 
    for(char c3 = 'A'; c3 <= 'Z'; c3++){ 
     System.out.println("" + c1 + c2 + c3); 
    } 
    } 
} 

在我添加到字符串末尾,否則你會得到的,而不是字符串的數值,像你期待:

System.out.println('A' + 'B' + 'C'); // Output: 198 
System.out.println("" + 'A' + 'B' + 'C'); // Output: ABC 
+0

一個簡單明確的答案+1 –

+0

但是OP沒有解釋他想要什麼,因爲他使用長度爲1的人可以猜測字母的數量可能大於3. –

+0

也許我誤解了。我認爲OP想要製作他們在標題中發佈的例子。 – Tyler

0

String.replace()方法是通過用newChar值替換字符串oldChar的所有出現。

您可以嘗試使用lastIndexOf()歸檔您的目標。

0

我正在遞增每個循環中的每個字符。該代碼給出正確的輸出: -

public static void main(String args[]) 
{ 
String s = "AAA"; 
StringBuilder ss = new StringBuilder(s); 
char ccc = ss.charAt(0); 
for(int i = 0 ; i < 26 ;i++) 
{ 


    ss = ss.replace(0,1,Character.toString(ccc++)); 

    char cc = ss.charAt(1); 
    for(int j = 0 ; j < 26;j++) 
    { 

     ss = ss.replace(1,2,Character.toString(cc++)); 
     char c = ss.charAt(2); 
     for(int k = 0 ; k < 26;k++) 
     { 

      ss = ss.replace(2, 3,Character.toString(c++)); 

      System.out.println(ss); 
     } 
     ss.replace(2, 3, "A"); 
    } 
    ss.replace(1, 2, "A"); 
    } 

希望這有助於

相關問題