有A,B,c三个数组(三层)
00 A 001
00 A 002
00 B 003
00 B 004
01 A 005
01 A 006要按如下结构输出..
00 A 
001
002

003
00401 A 
005
006
弄了一会,晕了...没出来..

解决方案 »

  1.   

    也就是三个一维数组..
    A数组 00 00 00 00 01 01
    B数组 A A B B A A
    C数组 001,002,003,004,005,006
      

  2.   

    考虑使用"树"这种数据结构实现。class NodeInfo {
        String content;
        int start;
        int end;
    }class Node {
        NodeInfo nodeInfo;
        List<Node>  childList;
    }publis class MainClass {
        /**
         * 在指定数组的指定位置范围内搜索child
         */
        ArrayList<NodeInfo> getNodes(String[] datas, int start, int end) {
           //coding
        }    public void static main(String[] args) {
           String[] A,B,C;
           //给A,B,C赋值
           //......
           ArrayList<NodeInfo> ALayerNodes = getNodes(A,0,A.length-1); 
           
           Node root = new Node();
           
           root.childList = new ArrayList<Node>();
           for (int i=0 ,int size = ALayerNodes.size(); i<size; i++) {
              NodeInfo nodeInfoB = ALayerNodes.get(i);
              ArrayList<NodeInfo> BLayerNodes = getNodes(B,nodeInfo.start,nodeInfo.end); 
              root.childList.add(nodeInfoB);
              nodeInfoB.childList = new ArrayList<Node>();
              for (int j=0; int size= BLayerNodes.size(); j<size; j++) {
                  NodeInfo nodeInfoC = BLayerNodes.get(j);
                  ArrayList<NodeInfo> CLayerNodes = getNodes(C,nodeInfo.start,nodeInfo.end); 
                  nodeInfoB.childList.add(nodeInfoC);
              }
           }
          
           //对root循环输出
           //......
        }
    }直接在文本框里写的代码,不知道能不能编译通过,但是这个思路应该可以满足你的要求。
      

  3.   

    有几个变量名称写错了,修改了一下。    public void static main(String[] args) {
           String[] A,B,C;
           //给A,B,C赋值
           //......
           ArrayList<NodeInfo> ALayerNodes = getNodes(A,0,A.length-1); 
           
           Node root = new Node();
           
           root.childList = new ArrayList<Node>();
           for (int i=0 ,int size = ALayerNodes.size(); i<size; i++) {
              NodeInfo nodeInfoB = ALayerNodes.get(i);
              ArrayList<NodeInfo> BLayerNodes = getNodes(B,nodeInfoB.start,nodeInfoB.end); 
              root.childList.add(nodeInfoB);
              nodeInfoB.childList = new ArrayList<Node>();
              for (int j=0; int sizeB= BLayerNodes.size(); j<sizeB; j++) {
                  NodeInfo nodeInfoC = BLayerNodes.get(j);
                  ArrayList<NodeInfo> CLayerNodes = getNodes(C,nodeInfoC.start,nodeInfoC.end); 
                  nodeInfoB.childList.add(nodeInfoC);
              }
           }
          
           //对root循环输出
           //......
        }
      

  4.   

    这用到了Arrraylist的特性,但要求不用其它特性,只能用一维数组,循环判断等..然后print出来..
      

  5.   

    和ArrayList没有关系,如果必须用循环的话,也就是3重循环,外层循环确定下层循环中对应数组的搜索范围,一旦确定了搜索范围(同时确定了当前要输出的值),进入下层循环,然后再对应的范围内确定要输出的值。最多用3对变量纪录就够了,就是我上面程序中的start 和 end。思路是一样的。如果数组是不定个,可以用递归实现。等我空下来给你写个可运行的程序,不过最好自己写。
      

  6.   

    同意wdman(天空): 
     从你需要的输出来看 是一个树的结构,用数组来描述这个数据结构不合理!
      

  7.   

    设计别人做好了,估计改是没有希望了,而且语言不是java,所以设计方面也有局限..
      

  8.   

    pl/sql  oralce的脚本,可以方便的把数据库查询的列放到一个list(相当于数组里).
      

  9.   

    以下代码在jdk1.5下编译运行成功,请参考。package test.java.others;/**
     * <p></p>
     * @version 1.0 2005/10/04
     */
    public class PrintOut { /**
     * <p>メソッド内容を記載する。</p>
     * @param args
     */
    public static void main(String[] args) {
    print();
    }

    private static void print() {
    String A[] = {"00","00","00","00","01","01"};
    String B[] = {"A","A","B","B","A","A"};
    String C[] = {"001","002","003","004","005","006"};

    int bStart = 0;
    int bEnd = 0;
    //make it easier
    String currentA = A[0];
    for (int i=0;i<A.length;i++ ) {
    if ((!currentA.equals(A[i])) || (i==(A.length-1))) {
    bStart = bEnd;
    if (i==(A.length-1) && currentA.equals(A[i])) {
    bEnd = i + 1;
    } else {
    bEnd = i;
    }
    System.out.println();
    System.out.println(currentA);
    System.out.println();

    int cStart =0;
    int cEnd =0;
    String currentB = B[bStart];
    for (int j=bStart; j<bEnd; j++) {

    if (!currentB.equals(B[j]) || (j==(bEnd-1))) {
    if (cEnd >= bStart)
    cStart = cEnd;
    else {
    cStart = bStart;
    }
    if ((j==(bEnd-1) && currentB.equals(B[j])) ) {
    cEnd = j + 1;
    } else {
    cEnd = j;
    } System.out.println(currentB);

    for (int k=cStart; k<cEnd; k++) {
    System.out.println(C[k]);
    }

    String tempB = currentB;
    currentB = B[j];
    if (!tempB.equals(B[j]) && (j==(bEnd-1))){
    j--;
    }
    continue;
    }
    if (currentB.equals(B[j])) {
    continue;
    }
    }

    String tempA = currentA;
    currentA = A[i];
    if (!tempA.equals(A[i]) && (i==(A.length-1))){
    i--;
    }
    continue;
    }
    if (currentA.equals(A[i])) {
    continue;
    }
    }
    }
    }