【问题标题】:Print a pattern like AAA to ZZZ starts like AAA AAB AAC.... AAZ ABA ABB ... ZZZ?打印 AAA 到 ZZZ 之类的图案以 AAA AAB AAC.... AAZ ABA ABB ... ZZZ 开头?
【发布时间】:2017-09-02 19:43:58
【问题描述】:

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

        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 个嵌套循环中的每个字符
  • for (char c = 'A'; c &lt;= 'Z'; c++) 在 Java 中工作得很好。很少需要弄乱字符代码。
  • 概括Permutation of an array, with repetition, in Java 来解决您的问题应该不会太难,尽管如果它仅用于 3 个字符,这可能是矫枉过正。要了解为什么您的方法不起作用,请拿起笔和纸,写下数组每次迭代时发生的情况(并阅读 String.replace 所做的事情,因为这不是您的想法)。

标签: java


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您只需要三个循环(每个字符位置一个):

    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
    

    【讨论】:

    • 但是 OP 没有解释他想要什么,因为他使用 length-1 可以猜到字母的数量可能大于 3。
    • 也许我理解错了。我认为 OP 想要制作他们在标题中发布的示例。
    • 如果我要概括它,我可能会使其递归。
    【解决方案3】:

    我在每个循环中递增每个字符。这段代码给出了正确的输出:-

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-09-28
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 2010-12-31
      相关资源
      最近更新 更多