大家好,今天小编关注到一个比较有意思的话题,就是关于j***a语言输出菱形的问题,于是小编就整理了3个相关介绍j***a语言输出菱形的解答,让我们一起看看吧。
怎样用J***A绘制一个菱形图案?
j***a 输出菱形代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package demo;
public class Demo01 {
public static void main(String[] args) {
int i, j, k;
for (i = 1; i <= 5; i++) {
for (j = 1; j <= 5 - i; j++)
System.out.print(" ");
for (k = 1; k <= 2 * i - 1; k++)
System.out.print("*");
System.out.println("");
}
for (i = 1; i <= 4; i++) {
for (j = 1; j <= i; j++)
System.out.print(" ");
for (k = 1; k <= 9 - 2 * i; k++)
System.out.print("*");
System.out.println("");
}
}
}
绘制算法:
1、分为两部分,上半部分和下半部分
2、输出空格部分换个输出*部分
3、最后一个标签需要换行
j***a程序for循环打印菱形?
1、首先在eclipse中创建一个测试类TestPractice,在main方法中实现菱形的打印。
2、菱形的打印可以分成上下两个部分来实现。首先,我们来分析下上部分的图形规律:
4空格、1星、换行;
3空格、3星、换行;
2空格、5星、换行;
1空格、7星、换行;
0空格、9星、换行;
3、接下来,我们来分析下下部分的图形规律:
0空格、9星、换行;
1空格、7星、换行;
2空格、5星、换行;
3空格、3星、换行;
4空格、1星、换行;
4、通过分析,这样我们对整个的图形规律有了很大的了解,接下来,我们先来实现上部分的图形实现。
代码:
for(int i=0;i<5;i++){
for(int k=4;k>i;k--){
System.out.print(" ");
}
for(int j=0;j<2*i+1;j++){
System.out.print("*");
}
System.out.println();
}
5、下部分的图形实现:
代码:
for(int i=0;i<5;i++){
for(int k=0;k<i;k++){
System.out.print(" ");
}
for(int j=10;j>2*i+1;j--){
System.out.print("*");
}
System.out.println();
}
6、最后将两部分代码合并,一起执行即可完成菱形的输出。
如何用c语言for循环打出一个空心菱形?
画图画图(不画图难以会意)。下面是一个草图😁(找了个在线白板画的,漂亮吧~^(* ̄(oo) ̄)^)。
如图所示,***设要画一个规格为2a*2b的◇。a,b分别为对应方向的中心位置。不难看出,程序一共需要打印2b+1行,2a+1列(因为第0行0列也是需要打印的,但是程序是从0开始计数的,因此最后的行列下标就是2a和2b,2a+1和2b+1是数量)。
程序打印通常会使用空格和*作为打印菱形的字符,由于基本的输出单位是字符(相当于菱形内的所有角的大小是固定的,不论多么大的菱形都是相似的),所以2a和2b会相互制约。我想打印一个10*50的菱形时,当打印到第5行是就已经从横向偏移量为0的位置开始打印了,第6行将会从-1列开始打印,这样打印出的图案将会是一个不完成的菱形,如下图,虚线部分将不会被打印。
程序以行为输出,因此我们不在控制y轴,只通过控制x轴方向的a来控制菱形的大小。我们不妨来归纳一下打印的规则:
第0行需要打印a个空格、打印一个*、换行。
第1行需要打印a-1个空格、打印1个*、打印1个空格、打印1个*、换行。
第2行需要打印a-2个空格、打印1个*、打印3个空格、打印1个*、换行。
第3行需要打印a-3个空格、打印1个*、打印5个空格、打印1个*、换行。
第n行需要打印a-n个空格、打印1个*、打印2n-1个空格、打印1个*、换行。
一直需要打印到n==a。打印0个空格、打印1个*、打印2a-1个空格、打印1个*、换行。
之后开始往回画。
第a+1行需要打印1个空格、打印1个*、打印2a-3个空格、打印1个*、换行。
第a+2行需要打印2个空格、打印1个*、打印2a-5个空格、打印1个*、换行。
第a+m行需要打印m个空格、打印1个*、打印2a-(2m+1)个空格、打印1个*、换行。
当打印到2a-(2m+1)<0[2a-2m<1=>m==a]时,则只直接打印换行,结束程序。
不难计算得出,一共需要打印2a+1行(和上面的2b+1相对应)。
示例如下图,网格里的大点点就是我们需要打印的点:
这样,伪代码基本就出来了:
参数:a 横向的中心点
// 打印上半截
for(n = 0; i <= a; n ++){
// 打印一行内容
for(i = 0; i < a-n; i ++){
print(' ');//打印a-n个空格
}
print('*');//打印1个*
if((2n - 1) < 0){
print('\n');// 未打印空格直接换行
continue;
}
for(i = 0; i < (2n - 1); i ++){
print(' ');//打印2n - 1个空格
}
print('*');// 打印1个*
print('\n');// 换行
}
// 打印下半截
for(m = 1; m <=a; m ++){
for(i = 0; i < m; i ++){
print(' ');// 打印m个空格
}
print('*');// 打印1个*
if(2a-(2m+1) < 0){
print('\n');// 换行
break;// 终止程序
}
for(i = 0; i < 2a-(2m+1); i ++){
print(' ');// 打印2a-(2m+1)个空格
}
print('*');// 打印1个*
print('\n');// 换行
}
以上就思路啦,赶紧去试一试吧~
以上内容只是说明了思路,大家还有什么好方法呢?一起来聊聊吧~
我是一名程序员,更多精彩请关注:空心小窝头
到此,以上就是小编对于j***a语言输出菱形的问题就介绍到这了,希望介绍关于j***a语言输出菱形的3点解答对大家有用。