文档章节

Java基础知识_day06_(螺旋矩阵,控制台打印图案)

S
 Sunmos
发布于 2017/05/13 00:18
字数 797
阅读 2
收藏 0

内容概要:

  • 螺旋矩阵
  • 控制台打印图案

1. 螺旋矩阵

思路概述:
螺旋矩阵实现思路分析
代码实现:

package com.heima.homework;
import java.util.Scanner;
public class SqueTest {
     /** * 根据输入的数字打印螺旋矩阵格式: * 1 2 3 4 * 12 13 14 5 * 11 16 15 6 * 10 9 8 7 * @param args */
     public static void main(String[] args) {
           Scanner scanner = new Scanner(System.in);
           // 从键盘获取需要打印的螺旋矩阵的维度(行数)
           System.out.println("请输入螺旋矩阵的维度(整数):");
           luoXuan(scanner.nextInt());
     }
     // 打印螺旋矩阵
     private static void luoXuan(int num) {
           int[][] arr = new int[num][num];
           int start_num = 1;
           // 根据螺旋矩阵的要求,每次遍历正方形的四条边
           for (int i = 0; i < (arr.length + 1) / 2; i++) {
                start_num = fuzhi_method(arr, i, start_num);
           }
           // 输出螺旋矩阵
           for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr.length; j++) {
                     System.out.print(arr[i][j] + " ");
                }
                System.out.println();
                System.out.println();
           }
     }
     // 给正方形的四条边赋值,按照右->下->左->上顺序分别给四条边赋值
     private static int fuzhi_method(int[][] arr, int clo, int start_num) {
           int clo_num = (arr.length - 2 * clo);
           // 向右
           for (int i = 0; i < clo_num; i++) {
                arr[clo][clo + i] = start_num;
                start_num++;
           }
           // 向下
           for (int i = 1; i < clo_num; i++) {
                arr[clo + i][clo + clo_num - 1] = start_num;
                start_num++;
           }
           // 向左
           for (int i = 1; i < clo_num; i++) {
                arr[clo + clo_num - 1][clo + clo_num - 1 - i] = start_num;
                start_num++;
           }
           // 向上
           for (int i = clo_num - 2; i > 0; i--) {
                arr[clo + i][clo] = start_num;
                start_num++;
           }
           return start_num;
     }
}

2. 控制台打印图案

代码实现:

package com.heima.homework;
import java.util.Scanner;
/* * 1.长方形 * ***** * ***** * ***** * 2.三角形 * ***** * ****- * ***-- * **--- * *---- * 3.等腰三角形 * ---*--- * --***-- * -*****- * ******* * 4.等边三角形 * ---*--- * --*-*-- * -*-*-*- * *-*-*-* * */
public class GraphTest {
     public static void main(String[] args) {
           Scanner scanner = new Scanner(System.in);
           boolean flag = true;
           while(flag) {
                System.out.println("------------------------------------");
                System.out.println("1:长方形 2:直角三角形 3:等腰三角形 4:等边三角形 0:退出");
                System.out.println("------------------------------------");
                System.out.println("请选择要打印的图形(输入对应的数字):");
                switch (scanner.nextInt()) {
                case 1:
                     System.out.println("请输入要绘制的长方形的长(整数):");
                     int length = scanner.nextInt();
                     System.out.println("请输入要绘制的长方形的宽(整数):");
                     int wide = scanner.nextInt();
                     System.out.println("------------------------------------");
                     System.out.println("绘制长为" + length + ",宽为" + wide + "的长方形如下:");
                     rectangle(length, wide);
                     System.out.println("------------------------------------");
                     break;
                case 2:
                     System.out.println("请输入要绘制的直角三角形的行数(整数):");
                     int row_1 = scanner.nextInt();
                     System.out.println("------------------------------------");
                     System.out.println("绘制" + row_1 +"行的倒直角三角形如下:");
                     triangle(row_1);
                     System.out.println("------------------------------------");
                     break;
                case 3:
                     System.out.println("请输入要绘制的等腰三角形的行数(整数):");
                     int row_2 = scanner.nextInt();
                     System.out.println("------------------------------------");
                     System.out.println("绘制" + row_2 +"行的等腰三角形如下:");
                     dengYao(row_2);
                     System.out.println("------------------------------------");
                     break;
                case 4:
                     System.out.println("请输入要绘制的等边三角形的边数(整数):");
                     int row_3 = scanner.nextInt();
                     System.out.println("------------------------------------");
                     System.out.println("绘制边长为" + row_3 +"的等边三角形如下:");
                     dengBian(row_3);
                     System.out.println("------------------------------------");
                     break;
                case 0:
                     flag = false;
                     break;
                default:
                     System.out.println("对不起,您需要打印的图形,正在开发中!");
                     break;
                }
           }
     }

     /** * 打印等边三角形 * @param row_2 */
     private static void dengBian(int row_2) {
           for (int i = 1; i <= row_2; i++) {
                for (int j = 1; j <= row_2 - i; j++) {
                     System.out.print(" ");
                }
                for (int j = 1; j <= i; j++) {
                     System.out.print("* ");
                }
                System.out.println();
           }
     }
     /** * 绘制等腰三角形 * @param row_1 */
     private static void dengYao(int row_1) {
           for (int i = 1; i <= row_1; i++) {
                for (int j = 1; j <= row_1 - i; j++) {
                     System.out.print(" ");
                }
                for (int j = 1; j <= 2 * i - 1; j++) {
                     System.out.print("*");
                }
                System.out.println();
           }
     }
     /** * 绘制三角形 * @param row 行 */
     private static void triangle(int row) {
           for (int i = 0; i < row; i++) {
                for (int j = 0; j < row - i; j++) {
                     System.out.print("*");
                }
                System.out.println();
           }
     }
     /** * 绘制长方形 * @param length 长 * @param wide 宽 */
     private static void rectangle(int length, int wide) {
           for (int i = 0; i < wide; i++) {
                for (int j = 0; j < length; j++) {
                     System.out.print("*");
                }
                System.out.println();
           }
     }
}

本文转载自:http://blog.csdn.net/l631106040120/article/details/64128878

S
粉丝 0
博文 34
码字总数 0
作品 0
成都
私信 提问
LeetCode:Spiral Matrix - 螺旋输出矩阵中的元素

1、题目名称 Spiral Matrix(螺旋输出矩阵中的元素) 2、题目地址 https://leetcode.com/problems/spiral-matrix/ 3、题目内容 英文:Given a matrix of m x n elements (m rows, n columns...

北风其凉
2015/11/02
0
0
LeetCode:Spiral Matrix II - 将元素1-n^2以螺旋序填充到矩阵

1、题目名称 Spiral Matrix(螺旋输出矩阵中的元素) 2、题目地址 https://leetcode.com/problems/spiral-matrix-ii/ 3、题目内容 英文:Given an integer n, generate a square matrix fill...

北风其凉
2015/11/03
0
0
java基础重点讲解,看了还不会找我(四)

###04.01Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体...

谢小芳是女神
2018/12/30
0
0
《Java从小白到大牛精简版》之第3章 第一个Java程序

《Java从小白到大牛》纸质版已经上架了!! 本书第一个Java程序是通过控制台输出HelloWorld,以这个示例为切入点,向大家系统介绍Java程序的编写、Java源代码结构以及一些基础知识。 在Java中...

tony关东升
2018/06/26
0
0
求Java版螺旋矩阵算法

求Java版螺旋矩阵算法,函数声明: 要求: 最短,最简洁,最佳答案加20分。

悠悠然然
2015/04/03
351
3

没有更多内容

加载失败,请刷新页面

加载更多

Linux修改时区的正确方法【修改时间,需要修改软连接,靠谱】

CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件 [root@centos7 ~]# ll /etc/localtime lrwxrwxrwx 1 root root 33 Oct 12 11:01 /etc/loca......

Airship
40分钟前
0
0
《Netkiller Spring Cloud 手札》之 Master / Slave 主从数据库数据源配置

5.19.1. Master / Slave 主从数据库数据源配置 5.19.1.1. application.properties spring.datasource.master.driverClassName = com.mysql.cj.jdbc.Driverspring.datasource.master.url=j......

netkiller-
44分钟前
45
0
大数据(hadoop-HDFS的本地开发环境的配置与常见的HDFS的JAVA API)

HDFS的本地开发环境搭建 1:所需工具 1)hadoop2.7.3安装包 2)hadoop-eclipse-plugin插件 https://github.com/winghc/hadoop2x-eclipse-plugin 2:搭建过程 1:解压hadoop2.7.3文件2:下载...

这很耳东先生
55分钟前
1
0
TCP协议的定义和丢包时的重传机制

TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,...

tantexian
56分钟前
2
0
图解Tomcat类加载机制(阿里面试题)

Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双...

群星纪元
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部