一组数
2006.01 25
2006.02 35
2007.01 25
2007.02 35想格式化成:
   2006 2007
01  25   25
02  35   35部分代码:
String [][] T  = new String[4][2];
T[0][0] = "2006.01";
T[0][1] = "25";
T[1][0] = "2006.02";
T[1][1] = "35";

T[2][0] = "2007.01";
T[2][1] = "25";
T[3][0] = "2007.02";
T[3][1] = "35";请问如果打印出来想要的格式:

解决方案 »

  1.   

    哈哈 发现我特别喜欢做这种无聊的题目
    效率可能低了点 就和着用吧import java.util.*;
    public class Test {
    public static void main(String[] args){
    String[][] arr={{"2006.1","25"},{"2009.4","75"},{"2003.8","22"},{"2006.2","35"},{"2006.3","48"},{"2007.1","25"},
    {"2007.3","55"},{"2008.2","15"},{"2008.4","65"},{"2009.6","84"},{"2008.3","25"}};

    TreeSet<String> yearSet=new TreeSet<String>();
    TreeSet<String> monthSet=new TreeSet<String>();

    String year,month;
    for(int i=0;i<arr.length;i++){
    year=arr[i][0].substring(0, 4);
    month=arr[i][0].substring(5);
    yearSet.add(year);monthSet.add(month);
    }

    HashMap<String,Integer> yearMap=new HashMap<String,Integer>();
    HashMap<String,Integer> monthMap=new HashMap<String,Integer>();

    String[][] newArr=new String[monthSet.size()+1][yearSet.size()+1];
    for(int m=0;m<monthSet.size()+1;m++)
    for(int y=0;y<yearSet.size()+1;y++)
    newArr[m][y]="/";
    newArr[0][0]="m\\y";
    int i=1;
    for(String str:yearSet){
    newArr[0][i]=str;
    yearMap.put(str, i++);}
    int j=1;
    for(String str:monthSet){
    newArr[j][0]=str;
    monthMap.put(str, j++);}

    for(int k=0;k<arr.length;k++){
    year=arr[k][0].substring(0, 4);
    month=arr[k][0].substring(5);
    i=yearMap.get(year);
    j=monthMap.get(month);
    newArr[j][i]=arr[k][1];
    }
    for(String strs[]:newArr){
    for(String str:strs)
    System.out.printf("%5s",str);
    System.out.println();
    }
    }
    }
    输出:
      m\y 2003 2006 2007 2008 2009
        1    /   25   25    /    /
        2    /   35    /   15    /
        3    /   48   55   25    /
        4    /    /    /   65   75
        6    /    /    /    /   84
        8   22    /    /    /    /