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

网友投稿 293 2022-08-23


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=sxZHwjdva.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;sxZHwjdv 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

{

for(int j=0;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

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

{

for(int j=0;j

{

System.out.print(array[i][j]+" ");

}

System.out.println(); //换行

}

for(int row=0;row

StringBuilder column = new StringBuilder();

for(int line= 0;line

if(array[row][line]==1){

column.append(" ");

}else{

column.append("*");

}

}System.out.println(column);

}

}

{

for(int j=0;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

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

{

for(int j=0;j

{

System.out.print(array[i][j]+" ");

}

System.out.println(); //换行

}

for(int row=0;row

StringBuilder column = new StringBuilder();

for(int line= 0;line

if(array[row][line]==1){

column.append(" ");

}else{

column.append("*");

}

}System.out.println(column);

}

}

{

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

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

{

for(int j=0;j

{

System.out.print(array[i][j]+" ");

}

System.out.println(); //换行

}

for(int row=0;row

StringBuilder column = new StringBuilder();

for(int line= 0;line

if(array[row][line]==1){

column.append(" ");

}else{

column.append("*");

}

}System.out.println(column);

}

}

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

{

for(int j=0;j

{

System.out.print(array[i][j]+" ");

}

System.out.println(); //换行

}

for(int row=0;row

StringBuilder column = new StringBuilder();

for(int line= 0;line

if(array[row][line]==1){

column.append(" ");

}else{

column.append("*");

}

}System.out.println(column);

}

}

{

for(int j=0;j

{

System.out.print(array[i][j]+" ");

}

System.out.println(); //换行

}

for(int row=0;row

StringBuilder column = new StringBuilder();

for(int line= 0;line

if(array[row][line]==1){

column.append(" ");

}else{

column.append("*");

}

}System.out.println(column);

}

}

{

System.out.print(array[i][j]+" ");

}

System.out.println(); //换行

}

for(int row=0;row

StringBuilder column = new StringBuilder();

for(int line= 0;line

if(array[row][line]==1){

column.append(" ");

}else{

column.append("*");

}

}System.out.println(column);

}

}

StringBuilder column = new StringBuilder();

for(int line= 0;line

if(array[row][line]==1){

column.append(" ");

}else{

column.append("*");

}

}System.out.println(column);

}

}

if(array[row][line]==1){

column.append(" ");

}else{

column.append("*");

}

}System.out.println(column);

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python 封装zabbix-get接口调用(python怎么读)
下一篇:Python 封装SNMP调用接口(python和java哪个更值得学)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~