Java 如何用二维数组创建空心菱形

目录
  • 如何用二维数组创建空心菱形
    • 题目:用“*”创建一个菱形空心
  • 使用数组打印实心菱形
    • 二维数组的输出(其中一种方法)
    • 正式代码

如何用二维数组创建空心菱形

提供一个我自己的实现方法,方法实现只是一个人的是靠方式,并不是代表实力,真正的实力用自己的这种思维解决别人亟待解决的问题,真才是目前我觉得的编程的意义。鸡汤喝了,精神好了!来看看我的实例。

题目:用“*”创建一个菱形空心

为了能更好的找出横纵坐标的关系,我简单做了一个菱形图

图1.菱形

从图中可以找出*点与坐标值的意义,所以此题是用二维坐标来做的;

分两部分输出图像, 上半部分:

从中间开花,给两边的值赋值为1,否则为0,最后给赋值为1的点输出*号;

  • 定义二维数组的位 int []a=new int [13][13];
  • 定义列方向上的两个点,p1,p2,即a[i][p1],a[i][p2];

所以由图2,可知   A ,B,C点可以知道p1=a.length/2-i(在编程过程中i是0,a.length/2是6也是一行中的中点),p2=a.length/2+i; B(i,p1),C(i,p2);

图2.菱形

为什么分两部分,因为在a.lengh/2-i  ,在i等于7的时候得负了,所以并不能一直使用原来的p1,p2的值,需要重新找好横纵坐标的规律。

下半部分:

D的坐标是(i,i-a.length/2),即D(i,p3),E的坐标比较难找到关系,我也是想了很久,呵呵就是一直试,最后没办法试不出来,还是画图做分析才找到规律的,所以科学的方法是要用数学的思维,找横纵坐标点的位置关系;

图3 E点坐标分析

具体实现代码:

package com.JavaBase;
public class lingxing {
	// 菱形

	public static void main(String[] args) {
		int n = 15;//n只能是奇数
		int[][] a = new int[n][n];
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[i].length; j++) {
				a[i][j] = 0;
				int p1 = a.length / 2 - i;
				int p2 = a[i].length / 2 + i;//p1,p2的规律非常好找
				if (i <= a.length / 2) {//上半部分
					a[i][p1] = 1;
					a[i][p2] = 1;
					if (a[i][j] == 1) {
						System.out.print("*");
					} else {
						System.out.print(" ");
					}
				} else {//下半部分
					int p3 = i - a.length / 2;//与p1相反
					int p4 = a.length - (i - a.length / 2) - 1;//p4的规律比较难找到
					a[i][p3] = 1;
					a[i][p4] = 1;
					if (a[i][j] == 1) {
						System.out.print("*");
					} else {
						System.out.print(" ");
					}
				}
			}
			System.out.println();
		}
	}
}

给予借鉴和思考,方法有很多,不单只有这种,也许你的改进之后会更好。

使用数组打印实心菱形

输出如图所示的图像

思路创建一个二维方形数组,写出正方形的四个角,之后用stringbuffer中的append进行替换

知识点:

输入Scanner sc = new Scanner(System.in);  想要转换成int数要  int num =sc.nextInt();

二维数组的输出(其中一种方法)

for(int i=0;i<array.length;i++)
	     {
	         for(int j=0;j<array[i].length;j++)
	         {
	             System.out.print(array[i][j]+" ");
	         }
	         System.out.println();  //换行
	     }  

正式代码

import java.util.Scanner;
public class text_2 {
	public static void main(String[] args){
		System.out.println("请输入数组维度");
		Scanner sc = new Scanner(System.in);
		int num =sc.nextInt();
		text_2.printstart(num);
	}
	public static void printstart(int n){
		int[][] array = new int[n][n];
		for (int row = 0;row<n/2;row++){
			for(int line = 0;line <(n/2-row);line++){
				array[row][line]=1;
				array[row][n-line-1]=1;
				array[n-row-1][line]=1;
				array[n-row-1][n-line-1]=1;
			}
		}
		for(int i=0;i<array.length;i++)
	     {
	         for(int j=0;j<array[i].length;j++)
	         {
	             System.out.print(array[i][j]+" ");
	         }
	         System.out.println();  //换行
	     }
		for(int row=0;row<n;row++){
			StringBuilder column = new StringBuilder();
			for(int line= 0;line<n;line++){
				if(array[row][line]==1){
					column.append("  ");
				}else{
					column.append("*");
				}
			}System.out.println(column);
		}
	}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java基础语法之二维数组详解

    一.二维数组 进入正题之前.首先为了便于大家理解,我画了一个图: xx枪战游戏中, 我是一个刚刚注册账号的小白,系统送了我两把枪,此时,我的武器库只有这么一层(可以理解为一位数组,枪就是对应的数组中对应的元素) 经过艰苦卓绝的战斗,终于有了一笔钱,现在我打算配置好的游戏装备,我现在有了一个枪柜,它可以存放三层的枪械,每一层都可以放多把武器(这个就是二维数组,有多层,每层都是一个一维数组) 随着游戏时长和我的高超技术,获取游戏装备的效率越来越高了,一个枪柜已经存不下了,于是,我就有了多个枪柜(这个

  • java定义二维数组的几种写法(小结)

    如下所示: //定义二维数组写法1 class numthree { public static void main(String[] args) { float[][] numthree; //定义一个float类型的2维数组 numthree=new float[5][5]; //为它分配5行5列的空间大小 numthree[0][0]=1.1f; //通过下标索引去访问 1行1列=1.1 numthree[1][0]=1.2f; // 2行1列=1.2 numthree[2][0]=1.3

  • Java二维数组简单定义与使用方法示例

    本文实例讲述了Java二维数组简单定义与使用方法.分享给大家供大家参考,具体如下: Java的二维数组是先创建一个一维数组,然后该数组的元素再引用另外一个一维数组.在使用二维数组的时候,通过两个中括号[]来访问每一层维度的引用,直到访问到最终的数据. public class MultiDimArray{ /** * @param args */ public static void main(String[] args) { int[][] arr = new int[3][]; arr[0]

  • Java二维数组实战案例

    本文实例讲述了Java二维数组.分享给大家供大家参考,具体如下: 一 点睛 1 每行的元素个数不同的二维数组 Java定义二维数组更加灵活,允许二维数组中的每行的元素个数不相等,这点与其他编程语言不同,例如下面这个二维数组,其中第1行有4个元素,第2行有3个元素,第3行有5个元素 int [][] num={ {1,2,3,4}, {1,2,3}, {1,2,3,4,5} }; 下面的语句是声明整型的二维数组num并分配空间,其中第1行4个元素,第2行3个元素,第3行5个元素 int [][]

  • Java 如何用二维数组创建空心菱形

    目录 如何用二维数组创建空心菱形 题目:用“*”创建一个菱形空心 使用数组打印实心菱形 二维数组的输出(其中一种方法) 正式代码 如何用二维数组创建空心菱形 提供一个我自己的实现方法,方法实现只是一个人的是靠方式,并不是代表实力,真正的实力用自己的这种思维解决别人亟待解决的问题,真才是目前我觉得的编程的意义.鸡汤喝了,精神好了!来看看我的实例. 题目:用“*”创建一个菱形空心 为了能更好的找出横纵坐标的关系,我简单做了一个菱形图 图1.菱形 从图中可以找出*点与坐标值的意义,所以此题是用二维坐标

  • Java 二维数组创建及使用方式

    目录 二维数组的创建 二维数组基本使用 1. 二维数组的使用 2. 使用方式 1: 动态初始化 3. 使用方式 2: 动态初始化 4. 使用方式 3: 动态初始化-列数不确 5. 使用方式 4: 静态初始化 6. 二维数组的应用案例 7. 二维数组使用细节和注意事项 8. 二维数组课堂练习 二维数组的创建 二维数组好比一个表格,第一个下标表示行,第二个下标表示列,数组的创建和初始化与一位数组一模一样,及二维数组就是一个把多个一维数组包起来的数组. 数组的创建: type[][] arrayNam

  • Java数据结构实现二维数组与稀疏数组转换详解

    基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: ①记录数组一共有几行几列,有多少个不同的值(0除外). ②把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模. 二维数组转稀疏数组: ①遍历原始的二维数组,得到有效数据的个数 sum(除0外不同值) ②根据 sum 创建稀疏数组 sparseArr int[sum+1][3] ③将二维数组的有效数据数据存入到稀疏数组 (稀疏数组的第一行,三列分别记录二维数组

  • Java 轻松实现二维数组与稀疏数组互转

    目录 二维数组 稀疏数组 1.稀疏算法的基本介绍 2.稀疏算法的处理方式 二维数组转稀疏数组的思路 二维数组 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式].二维数组又称为矩阵,行列数相等的矩阵称为方阵.对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素. 稀疏数组 1.稀疏算法的基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组.从而减少计算机不必要的内存开销.

  • java int类型二维数组实现“杨辉三角”的完整实例

    杨辉三角的规律: 1.每行的数据个数和在第几行一样. 2.每行第一个数和最后一个数都是1. 3.每行除了第一个数据和最后一个数据 其他数据的值等于上面一行的对应列的值和左对角值的和.例如:a[2][1]=a[1][0]+a[1][1] 根据上面的规律我们设计程序 private static void demo(){ int[][] ints = new int[10][]; //动态给ints数组的一维赋值一个不同的数组 for (int i = 0; i < ints.length; i++

  • Java中的二维数组的赋值与输出方式

    目录 二维数组的赋值与输出 随机给二维数组赋值,打印输出每个元素 题目 二维数组的赋值与输出 public class Demo1 { public static void main(String[] args) { //声明一个二维数组:有三行,列数待定,数组结构表示为{{ },{ },{ }} String s[][]=new String[3][];//动态赋值二维数组 s[0]=new String[3]; s[1]=new String[2]; s[2]=new String[3];

  • Java中一维二维数组的静态和动态初始化

    今天我们要开始来讲讲Java中的数组,包括一维数组和二维数组的静态初始化和动态初始化 数组概述: 数组可以看成是多个相同类型数据的组合,对这些数据的统一管理; 数组变量属于引用数据类型,数组也可以看成是对象,数组中的每一个元素相当于该对象的成员变量; 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型; 一维数组的声明: 声明方式: 例如; int a [ ]  = new int [3]; Java语言中 声明是不能指定其长度[数组中元素的个数]; 非法声明; int a [5];

  • Java如何将二维数组转化为一维数组

    目录 将二维数组转化为一维数组 一维数组转化为二维数组 将二维数组转化为一维数组 1. 为了偷懒所以我写了一个随机生成二维数组的函数 /* * 自动创建随机为100以内的二维数组: int nums[x][y] * */ public static int[][] CreatedDemArray(int x,int y){ int nums[][]=new int[x][y]; for(int i=0;i<nums.length;i++){ for(int j=0;j<nums[i].leng

  • C语言与java语言中关于二维数组的区别

    目录 C语言数中二维数组的定义格式 Java语言中二维数组的定义与初始化 静态初始化 动态初始化 下面给出两者的对比截图 C语言中的数组元素分布 Java中的数组元素分布 数组是编程语言中常用的数据结构,然而在不同的环境下,其定义及初始化的方式也不尽相同.下面来讲述一下C和Java中对于二维数组定义的区别以及其背后的原理. 在C语言中,二维数组的初始化可以省略行数,但不能省略列数:而在java中却是正好相反的,即列数可以省略,而行数是不能省略的.为什么会是这样呢?首先我们来回顾一下C和Java中

  • 详解Java中一维、二维数组在内存中的结构

    前言 我们知道在Java中数组属于引用数据类型,它整个数组的数组元素既可以是基本数据类型的(如 byte \ int \ short \ long \ float \ double \ char \ boolean 这些),也可以是引用数据类型的.当它的数组元素是基本数据类型时,这个数组就是一个一维数组:当它的数组元素是引用数据类型时,它就是一个多维数组.比如,在一个数组中它的某个元素值其实是一个一维数组,而其他不同的元素也各自包含了一个一维数组,我们就把这个包含很多个一维数组的数组叫做二维数组

随机推荐