首页 > 编程语言 >Java 生成旋螺矩阵

Java 生成旋螺矩阵

时间:2023-07-19 14:01:17浏览次数:34  
标签:unitLen layer Java int 矩阵 System length 旋螺 data

    @Test
    public void virtualMain() {
        int[][] matrix = generateMatrix(9);
        MyArray.printSquareArray(matrix, 2);
    }

    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];
        int square = n * n, i = (int) Math.ceil(n / 2.00);
        int row = 0, column = 0;
        int counter = 1;
        int layer = 0;
        while (layer < i) {
            int starter = n - layer * 2;
            for (int j = counter, len = starter + counter - 1; j <= len; j++) {
                res[column][row++] = counter++;
            }
            row--;
            column++;
            for (int j = counter, len = starter + counter - 2; j <= len; j++) {
                res[column++][row] = counter++;
            }
            column--;
            row--;

            for (int j = counter, len = starter + counter - 1; j < len; j++) {
                res[column][row--] = counter++;
            }

            row++;
            column--;

            for (int j = counter, len = starter + counter - 2; j < len; j++) {
                res[column--][row] = counter++;
            }

            row++;
            column++;
            layer++;
        }
        return res;
    }
//辅助打印
    /**
     * format with output
     * @param data two dimension array
     * @param unitLen the maximum value of data unit length
     */
    public static void printSquareArray(int[][] data,int unitLen){
        unitLen+=1;

        for (int i = 0; i < data.length; i++) {
            for (int j = 0,len=data[0].length; j < len; j++) {
                System.out.print(data[i][j]);
                int unit = String.valueOf(data[i][j]).length();
                printSpace(unitLen - unit);
            }
            System.out.println("");
        }
    }

    private static void printSpace(int num){
        while (num-- > 0) System.out.print(" ");
    }

 

标签:unitLen,layer,Java,int,矩阵,System,length,旋螺,data
From: https://www.cnblogs.com/laremehpe/p/17565393.html

相关文章

  • 【技术积累】Java中的常用类【一】
    Math类Math类是Java中的一个数学工具类,提供了一系列常用的数学方法。下面是Math类的常用方法及其案例:abs()返回一个数的绝对值。intnum=-10;intabsNum=Math.abs(num);System.out.println(absNum);//输出:10解释:abs()方法返回num的绝对值,即10。ceil()返回大于或等......
  • java parallelStream 线程堵塞问题笔记
    定义:Stream(流)是JDK8中引入的一种类似与迭代器(Iterator)的单向迭代访问数据的工具。ParallelStream则是并行的流,它通过Fork/Join框架(JSR166y)来拆分任务,加速流的处理过程。最开始接触parallelStream很容易把其当做一个普通的线程池使用,因此也出现了上面提到的开始的时候打标,结束......
  • Java基础 变量、常量、作用域
    Java基础变量、常量、作用域变量-变量是什么:就是可以变化的量!-Java是一种强类型的语言,每个变量都必须声明其类型-Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域**注意事项:1每个变量都有类型,类型可以是基本类型,也可以是引用类型2......
  • java协程线程之虚拟线程
    前言众所周知,java是没有协程线程的,在我们如此熟知的jdk1.8时代,大佬们想出来的办法就是异步io,甚至用并行的stream流来实现,高并发也好,缩短事件处理时间也好;大家都在想着自己认为更好的实现方式;在来说说吧,我为什么会在今天研究这个破b玩意儿呢,这事情还的从一个月前的版本维护说......
  • 影响 Java 程序的性能的因素和性能指标
    有哪些因素会影响Java程序的性能?执行速度:程序的反应是否迅速,响应时间是否足够短内存分配:内存分配是否合理,是否过多地消耗内存或者存在泄漏启动时间:程序从运行到可以正常处理业务需要花费多少时间负载承受能力:当系统压力上升时,系统的执行速度、响应时间的上升曲线是否平缓......
  • JavaScript - 支持word上传的富文本编辑器
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘贴的原理,通过TheViper找到粘贴图片的方法。其原理为一下步骤:监听粘贴事件;【用于插入图片】获取光标位置;【......
  • 浅谈Java容器
    Java容器容器类是Java以类库的形式供用户开发程序时可直接使用的各种数据结构。所谓数据结构就是以某种方式将数据组织在一起,并存储在计算机中。数据结构不仅可以存储数据,还支持访问和处理数据的操作。在面向对象思想里,一种数据结构被认为是一个容器。数组是一种简单的数据结构,......
  • Java基础入门
    一、注释方式标识符单行注释//多行注释/**/文档注释/***/二、基础1、进制进制前缀二进制0b八进制0十进制无十六进制0x2、数据类型typevarName[=value][{,varName[=value]}];bytenum1=127;shortnum2=32767;intn......
  • Java高并发之CyclicBarrier简介(转)
    原文:https://juejin.cn/post/7209617649885184058作者:xindoo来源:稀土掘金  Java中的CyclicBarrier是一种同步工具,它可以让多个线程在一个屏障处等待,直到所有线程都到达该屏障处后,才能继续执行。CyclicBarrier可以用于协调多个线程的执行,以便它们可以在某个点上同步执行......
  • JavaScript 的优雅编程技巧:Singleton Pattern
    JavaScript的优雅编程技巧:SingletonPattern定义单例模式:保证一个类仅有一个实例,并提供一个访问的全局访问点。特点仅有一个实例对象全局都可访问该实例主动实例化延迟实例化类似单例模式的使用实践jQuery,lodash,moment....电商中的购物车(因为一个用户只有一......