题目 给定一个num 输出图像 图中第一行为num 第二行为num对应的图案
package com.zkx;
public class Num {
public static void main(String[] args) {
Num n = new Num();
n.test(4);
}
public void test(int num) {
//控制输出的行数
for (int i = 0; i < num; i++) {
//计算出每行要输出的数值个数
/**
* 例子 num = 4 第一行输出 4*2-1 - 0*2 = 7
* 第二行 4*2-1-1*2 = 5
* 第三行 4*2-1-2*2 = 3
* 第四行 4*2-1-3*2 = 1
*/
int size = num * 2 - 1 - i * 2;
//每行开头输出i个'_'
for (int y = 0; y < i; y++) {
System.out.print('_');
}
//max用来记录每一行中最大值
int max = 0;
//分两部分输出 第一部分 输出到最大值
/**
* 例子 当num = 4时 第一行i = 0 输出4-0个数 输出1357
* 第二行 i =1 输出4-1个数 输出135
*/
//输出[0,num-i-1]
for (int j = 0; j <= num - i - 1; j++) {
//下标*2+1为输出的值
/**
* 例子
* 0*2+1 = 1
* 1*2+1 = 3
*/
int x = j * 2 + 1;
//记录每行最大值
if (j == num - i - 1) {
max = x;
}
System.out.print(x);
}
//第二部分 输出其余的值
/**
* 例子 当num = 4时
* 第一行i = 0 从4-0 到 4*2-1 - 0*2 = 7 输出第456 三个数 531
* 第二行i = 1 从4-1 到 4*2-1 - 1*2 = 5 输出第34 两个数 31
*/
//输出[num-i,size)
for (int j = num - i; j < size; j++) {
max -= 2;
System.out.print(max);
}
//每行末尾输出i个'_'
for (int y = 0; y < i; y++) {
System.out.print('_');
}
System.out.println();
}
}
}
1357531
_13531_
__131__
___1___
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)