一维:

一维跑马灯:步长在[3,5,8,13]中重复的循环右移,直至回到原始状态。

Java代码:

import java.util.Arrays;
public class Marquee1 {public static void main(String[] args) {int[] arr = new int[10];for (int i = 0; i < arr.length; i++) {arr[i] = i;}marqueeMove(arr);}//数组移动,步长为1public static void move(int[] a) {int temp = a[a.length - 1];for (int i = a.length - 1; i > 0; i--) {a[i] = a[i - 1];}a[0] = temp;}////按步长依次为3,5,8,13移动,直到回到原来的数组public static void marqueeMove(int[] a) {int[] temp = new int[a.length];for (int i = 0; i < a.length; i++) {temp[i] = a[i];}while (true) {//步长为3的移动for (int i = 0; i < 3; i++) {move(a);}System.out.print(3);if (Arrays.equals(temp,a)) {System.out.println(Arrays.equals(temp,a));return;}//步长为5的移动for (int i = 0; i < 5; i++) {move(a);}System.out.print(5);if (Arrays.equals(temp,a)) break;//步长为8的移动for (int i = 0; i < 8; i++) {move(a);}System.out.print(8);if (Arrays.equals(temp,a)) break;}}
}

二维:

二维跑马灯:6×6的二维数组,外圈顺时针,中圈逆时针,内圈顺时针,步长为1的移动。直至回到初始状态。

Java代码:

import java.util.Random;
public class Marquee2 {public static void main(String[] args) {Random random = new Random();int[][] arr = new int[6][6];for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {arr[i][j] = random.nextInt(10);}}look(arr);for (int i = 0; i < 20; i++) {move1(arr);}for (int i = 0; i < 12; i++) {move2(arr);}for (int i = 0; i < 4; i++) {move3(arr);}}//顺时针移动数组最外层,步长为1public static void move1(int[][] a) {//把第一行最后一个元素保存下来int temp = a[0][a[0].length - 1];//最外层第一行往右移动一位for (int i = a[0].length - 1; i > 0; i--) {a[0][i] = a[0][i - 1];}//最外层第一列往上移动一位for (int i = 1; i < a.length; i++) {a[i - 1][0] = a[i][0];}//最外层最后一行往左移动一位for (int i = 1; i < a[a.length - 1].length; i++) {a[a.length - 1][i - 1] = a[a.length - 1][i];}//最外层最后一列往下移动一位,注意在第一行的那个元素不能移动for (int i = a.length - 1; i > 1; i--) {a[i][a.length - 1] = a[i - 1][a.length - 1];}a[1][a.length - 1] = temp;look(a);}//次外层逆时针移动,步长为1public static void move2(int[][] a) {//把第二行第二个元素保存下来int temp = a[1][1];//次外层第一行往左移动一位for (int i = 2; i < a.length - 1; i++) {a[1][i - 1] = a[1][i];}//次外层最后一列往上移动一位for (int i = 2; i < a.length - 1; i++) {a[i - 1][a.length - 2] = a[i][a.length - 2];}//次外层最后一行往右移动一位for (int i = a.length - 2; i > 1; i--) {a[a.length - 2][i] = a[a.length - 2][i - 1];}//次外层第一列往下移动一位,注意此外层的第一行和第一列不能移动for (int i = a.length - 2; i > 2 ; i--) {a[i][1] = a[i - 1][1];}a[2][1] = temp;look(a);}//最内层顺时针移动,步长为1public static void move3(int[][] a) {int temp = a[2][3];a[2][3] = a[2][2];a[2][2] = a[3][2];a[3][2] = a[3][3];a[3][3] = temp;look(a);}//打印二维数组public static void look(int[][] a) {for (int i = 0; i < a.length; i++) {for (int j = 0; j < a[i].length; j++) {System.out.print(a[i][j] + "  ");}System.out.println();}System.out.println("------------------");}
}

三维:

三维:类似333的魔方。输入诸如2,1,3的数字,表示当x不变时,yoz平面(共有三个)上的内容进行一次循环移动步长为2;y不变时,xoz平面(也是三个)的内容进行一次步长为1的循环位移;以及当z不变时,xoy平面上的内容进行一次步长为3的循环移动。

Java代码:

import java.util.Random;
public class Marquee3 {public static void main(String[] args) {Random random = new Random();int[][][] arr = new int[3][3][3];for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {for (int k = 0; k < 3; k++) {arr[i][j][k] = random.nextInt(10);}}}marquee3(arr, 1, 1, 1);}public static void marquee3(int[][][] a, int a1, int a2, int a3) {look(a);//xoy转动a1次for (int i = 0; i < a1; i++) {move1(a[0]);}//xoz转动a2次for (int i = 0; i < a2; i++) {move2(a);}//yoz转动a3次for (int i = 0; i < a3; i++) {move3(a);}look(a);}//二维数组的移动,xoy平面的移动public static void move1(int[][] a) {//把第一行最后一个元素保存下来int temp = a[0][a[0].length - 1];//最外层第一行往右移动一位for (int i = a[0].length - 1; i > 0; i--) {a[0][i] = a[0][i - 1];}//最外层第一列往上移动一位for (int i = 1; i < a.length; i++) {a[i - 1][0] = a[i][0];}//最外层最后一行往左移动一位for (int i = 1; i < a[a.length - 1].length; i++) {a[a.length - 1][i - 1] = a[a.length - 1][i];}//最外层最后一列往下移动一位,注意在第一行的那个元素不能移动for (int i = a.length - 1; i > 1; i--) {a[i][a.length - 1] = a[i - 1][a.length - 1];}a[1][a.length - 1] = temp;}//正视第一层的转动,xoz平面public static void move2(int[][][] a) {//把正视第一层转换成一个二维数组,移动后再赋回原来数组int[][] temp = new int[a.length][a.length];for (int i = 0; i < temp.length; i++) {for (int j = 0; j < temp.length; j++) {temp[i][j] = a[i][a.length - 1][j];}}move1(temp);for (int i = 0; i < temp.length; i++) {for (int j = 0; j < temp.length; j++) {a[i][a.length - 1][j] = temp[i][j];}}}//右视第一层的转动,yoz平面public static void move3(int[][][] a) {int[][] temp = new int[a.length][a.length];for (int i = 0; i < temp.length; i++) {for (int j = 0; j < temp.length; j++) {temp[i][j] = a[i][a.length - j - 1][a.length - 1];}}move1(temp);for (int i = 0; i < temp.length; i++) {for (int j = 0; j < temp.length; j++) {a[i][a.length - j - 1][a.length - 1] = temp[i][j];}}}//打印查看三维数组public static void look(int[][][] a) {for (int i = 0; i < 3; i++) {System.out.println("第" + (i + 1) + "个二维数组");for (int j = 0; j < 3; j++) {for (int k = 0; k < 3; k++) {System.out.print(a[i][j][k] + " ");}System.out.println();}}}
}

Java实现三个维度的跑马灯(数组)相关推荐

  1. 制作Java告白exe应用程序(跑马灯+MusicPlayer)超简单

    java超级小白,大佬勿喷 本文章适用于java小小白 一.制作准备 jdk1.8.IntelliJ IDEA .java运行环境.以及创作所需要的jar包(百度网盘 请输入提取码)提取码:1123: ...

  2. java公告栏js资源_javascript公告栏跑马灯效果代码

    51前端 ul{ list-style:none; margin:0px; padding:0px; width:1500px; float:left; } ul li{ height:25px; l ...

  3. 视频安全之授权播放和防录屏跑马灯

    阿酷TONY  2021-2-26 整理 视频安全之授权播放和防录屏跑马灯 先上效果图(视频播放时,显示学员名称和学员手机号): 屏幕录像是最难防范的一种视频盗版方式,保利威播放器提供的防录屏跑马灯功 ...

  4. jQuery九宫格跑马灯抽奖(已知结果)

    描述: 写两个抽奖,等级不同,找到一个原生写法的,原作者链接如下: 参考( https://www.cnblogs.com/yangqing22/p/14065754.html ) 略改了一下,换成了 ...

  5. Vue.js 学习笔记 四 用一,二,三的知识做个跑马灯

    做个简单的跑马灯效果 页面定义2个按钮,绑定2个方法. <div id="divApp"><input type="button" value ...

  6. Android文字跑马灯简单实现的三种方法

    第一种 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  7. 单片机跑马灯程序c语言,MCS-51单片机控制跑马灯的三种方法

    描述 在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的.在并行端口的编程学习中,"跑马灯"是单片机并行端口输出控制的典型实例.所谓跑马灯,是 ...

  8. Java编程之路相关书籍(三个维度)

    一.关于Java的技术学习,可以按照下面分三个维度进行学习 : (1)向下发展,也就是底层的方向 建议看<深入Java虚拟机>.<Java虚拟机规范>.<Thinking ...

  9. java 垂直走马灯多行,Android实现图文垂直跑马灯效果

    最近在维护老项目,老项目有一个地方需要修改,就是垂直跑马灯的问题,之前的垂直跑马灯是只有文字跑马灯,新版需要加上. 之前是用的MarqueeView,看了下源代码是只支持文字的,于是我就改了下原作者的 ...

最新文章

  1. 中科院遗传发育所发表“重组菌群体系在根系微生物组研究中应用”的重要综述...
  2. nyoj676小明的求助
  3. “新型肺炎患者同乘查询系统”上线,超2千万用户使用
  4. 光纤交换机主要分为哪几类?
  5. java堆排序解决topk问题,利用堆排序来解决topK问题
  6. 综合评价方法之秩和比法(RSR)
  7. 狮子鱼社区团购商城系统小程序v17.7.0独立版+前端 安装使用教程
  8. VMware Workstation 14 Pro 安装 Windows Server 2008 R2(完)
  9. 记下js dom动态添加事件的解决方法
  10. C语言打印图形小妙招
  11. Java使用Tomcat服务器打开jsp等文件出现源码的解决办法
  12. 数字图像处理第三章part2
  13. 匈牙利算法——你一定可以看懂的图论算法
  14. Dcat-Admin自定义Excel数据导出
  15. 小程序导航图标_商场寻店不迷路 业内首个小程序AR导航上线
  16. 梳理:WPS JS宏之WPS表格单元格读写值
  17. Python学习笔记——照片换底色
  18. 苹果cms模板_首涂第三套苹果CMSv10自适应视频站模板
  19. RDKit | 化合物SDF文件转换为SMILES存储为CSV
  20. 娱乐机器人行业:兴于教育,困于教育

热门文章

  1. Android4.2上内置第三方锁屏(一)、锁屏开机加载流程
  2. 前段切图之ps使用技巧
  3. java 波峰检测_脉搏波波峰波谷自动检测方法
  4. 用hive实现判断股票价格的波峰 波谷
  5. 数据中心低压配电系统能耗分析与PUE计算
  6. history.pushState
  7. (一)cocos2d-x初识
  8. 【无标题】报告实录文本挖掘与分析(简单版)
  9. C# - Task的各种用法和详解
  10. S4 demo系统里面查哪个用户有开发部署Fiori的权限