打印像AAA这样的模式到ZZZ就像AAA AAB AAC ...... AAZ ABA ABB ... ZZZ?

时间:2017-04-07 12:12:59

标签: java

我已经尝试了以下代码,但它显示了一些错误..

        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));
             }
        }

3 个答案:

答案 0 :(得分: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);
    }
  } 
}

最后我添加了一个String,否则你会得到一个数值,而不是像你期望的那样得到String:

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

答案 1 :(得分:0)

String.replace()方法用newChar值替换字符串中出现的所有oldChar。

您可以尝试使用lastIndexOf()来归档您的目标。

答案 2 :(得分: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");
    }

希望这有帮助