A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雀巢咖啡 中级黑马   /  2014-4-24 22:30  /  1436 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我用递归算法打印的旋转方阵代码如下:
  1. class xuanzhuan
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[][] arr=new int[6][6];//建立6X6的二位数组
  6.                 perm(arr,0,1,6);//函数调用
  7.                 for(int i=0;i<6;i++)
  8.                 {
  9.                         for(int j=0;j<6;j++)
  10.                         {
  11.                                 System.out.print(arr[i][j]+" ");//打印数组
  12.                         }
  13.                         System.out.print("\n");
  14.                 }
  15.         }
  16.         public static void perm(int arr[][],int start,int num,int size)// 实现旋转方阵的函数
  17.         {
  18.                 int i=start;
  19.                 int j=start;
  20.                 if(size==0)//当方阵大小为0时结束
  21.                         return;
  22.                 if(size==1)
  23.                         arr[start][start]=num;//当方阵大小为1时直接打印
  24.                 for(int k=0;k<size-1;k++)//打印A区域
  25.                 {
  26.                         arr[i][j]=num;
  27.                         num++;
  28.                         i++;
  29.                 }
  30.                 for(int k=0;k<size-1;k++)//打印B区域
  31.                 {
  32.                         arr[i][j]=num;
  33.                         num++;
  34.                         j++;
  35.                 }
  36.                 for(int k=0;k<size-1;k++)//打印C区域
  37.                 {
  38.                         arr[i][j]=num;
  39.                         num++;
  40.                         i--;
  41.                 }
  42.                 for(int k=0;k<size-1;k++)//打印D区域
  43.                 {
  44.                         arr[i][j]=num;
  45.                         num++;
  46.                         j--;
  47.                 }
  48.                 perm(arr,start+1,num,size-2);//递归调用
  49.         }
  50. }
复制代码

运行结果:
C:\Users\Administrator\Desktop
怎样才能让方正对齐(及最下面一行的数与其上一行的数对齐?)。或者有没有更好的方法打印旋转方阵,求交流。

2 个回复

正序浏览
本帖最后由 水竹 于 2014-4-25 00:04 编辑

沙发是错的,你之所以没对齐是因为最后一行好多只有个位数字的,想要对齐也很简单,你之前用的空格分隔,换成制表符就行了:
  1. System.out.println(arr[i][j]+"\t");//打印数组
复制代码

觉得制表符太宽的话也好说啊,循环输出之前先加个判断,如果值小于10就打印个空格就是了。
回复 使用道具 举报
让方正对齐的办法是, 设置console的字体为等宽字体, 如常见的Courier字体,也叫Courier new ,你在eclipse里的windows选项里preferences里可以找到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马