如何在java中组合字母循环

时间:2013-06-14 03:32:46

标签: java loops

如何在Java中进行组合字母循环,就像这样的示例输出

A1 B1 C1 D1
A1 B1 C1 D2
A1 B1 C1 D3
A1 B1 C2 D1
A1 B1 C2 D2
A1 B1 C2 D3
A1 B2 C1 D1
A1 B2 C1 D2
A1 B2 C1 D3
A1 B2 C2 D1
A1 B2 C2 D2
A1 B2 C2 D3
A1 B3 C1 D1
A1 B3 C1 D2
A1 B3 C1 D3
A1 B3 C2 D1
A1 B3 C2 D2
A2 B3 C2 D3
A2 B1 C1 D1
A2 B1 C1 D2
A2 B1 C1 D3
A2 B1 C2 D1
A2 B1 C2 D2
A2 B1 C2 D3
A2 B2 C1 D1
A2 B2 C1 D2
A2 B2 C1 D3
A2 B2 C2 D1
A2 B2 C2 D2
A2 B2 C2 D3
A2 B3 C1 D1
A2 B3 C1 D2
A2 B3 C1 D3
A2 B3 C2 D1
A2 B3 C2 D2
A2 B3 C2 D3

对于像矩阵(36 x 4)这样的组合。 A1列为18,A2为18。 第2列为B1,6为B2,6为B3。 第3列为C1,3为C2。 第4列D1为1,D2为1,D3为1。 每列有36个数据。 感谢的。

2 个答案:

答案 0 :(得分:1)

人们可能因为放弃鱼而攻击我。就这样吧。

public class Scratch1
{
    private static class Nibble {
        private String[] symbols;
        private int      numSymbols;
        private int      numRepeats;

        public Nibble(int numRepeats, String... symbols) {
            this.symbols = symbols;
            this.numSymbols = symbols.length;
            this.numRepeats = numRepeats;
        }

        public String toString(int i) {
            return symbols[(i / numRepeats) % numSymbols];
        }
    }

    private static class Column {
        private Nibble firstNibble;
        private Nibble secondNibble;

        public Column(Nibble firstNibble, Nibble secondNibble) {
            this.firstNibble = firstNibble;
            this.secondNibble = secondNibble;
        }

        public String toString(int i) {
            return firstNibble.toString(i) + secondNibble.toString(i);
        }
    }

    public static void main(String[] args)
    {
        Column columns[] = {
            new Column( new Nibble(18, "A"), new Nibble(18, "1", "2")),
            new Column( new Nibble(18, "B"), new Nibble( 6, "1", "2", "3")),
            new Column( new Nibble( 6, "C"), new Nibble( 3, "1", "2")),
            new Column( new Nibble( 3, "D"), new Nibble( 1, "1", "2", "3"))
        };

        for (int i = 0 ; i < 36 ; i++) {
            for (int colNum = 0 ; colNum < columns.length ; colNum++) {
                if (colNum > 0) System.out.print(" ");
                System.out.print(columns[colNum].toString(i));
            }
            System.out.println();
        }
    }
}

答案 1 :(得分:0)

我认为模式是: 主数组有4个元素(A B C D),

  
      
  • 我们从A循环到D
  •   
  • D有3个元素(从D1到D3)
  •   
  • C有2个元素(从C1到C2)
  •   
  • B有3个元素(从B1到B3)
  •   
  • A有2个元素(从A1到A2)
  •   

伪代码:

String[2] A = {"A1","A2"};
String[3] B = {"B1","B2","B3"};
String[2] C = {"C1","C2"};
String[3] D = {"D1","D2","D3"};
for(int i = 0; i < A.length;i++){
   for(int j = 0;j < B.length;j++){
     for(int t = 0; t < C.length;t++){
        for(int e = 0; e < D.length;e++){
            System.out.printfln(A[i] + " " + B[j] + " " + C[t] + " " + D[e]);
        }
     }
   }
}