Java 实例-打印图形(一)

简介: Java 实例-打印图形(一)

Java 实例 – 打印菱形


输出指定行数的菱形。

package com.example.yan.java打印图形;
public class Main {
    public static void main(String[] args) {
        print(8); // 输出 8 行的菱形
    }
    public static void print(int size) {
        if (size % 2 == 0) {
            size++; // 计算菱形大小
        }
        for (int i = 0; i < size / 2 + 1; i++) {
            for (int j = size / 2 + 1; j > i + 1; j--) {
                System.out.print(" "); // 输出左上角位置的空白
            }
            for (int j = 0; j < 2 * i + 1; j++) {
                System.out.print("*"); // 输出菱形上半部边缘
            }
            System.out.println(); // 换行
        }
        for (int i = size / 2 + 1; i < size; i++) {
            for (int j = 0; j < i - size / 2; j++) {
                System.out.print(" "); // 输出菱形左下角空白
            }
            for (int j = 0; j < 2 * size - 1 - 2 * i; j++) {
                System.out.print("*"); // 输出菱形下半部边缘
            }
            System.out.println(); // 换行
        }
    }
}


手动输入展示图片


public static void main(String[] args) {
        while (true){
            Scanner scanner = new Scanner(System.in);
            System.out.println("************请输入菱形的数目************");
            String n = scanner.nextLine();
            System.out.println("打印的图形如下================");
            print(Integer.valueOf(n));
        }
    }
    public static void print(int n){
        if (n % 2 == 0) {
            n++;//计算菱形的行数
        }
        for (int i = 0; i < n; i++){
            int start;//第i行开始画菱形的下标
            int end;//第i行结束画菱形的下标
            if (i <= n/2){//计算递增部分开始结束下标
                start = n/2-i;
                end = n/2+i;
            }else {//计算递减部分开始结束下标
                start = n/2 - (n-1-i);
                end = n/2 + (n-1-i);
            }
            int count = 0;
            for (int j =0; j<n;j++){
                if (j>=start && j<=end){//开始结束之间即画图部分
                    System.out.print("*");
                    count++;
                    if (count == end - start +1){
                        break;
                    }
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }


Java 实例 – 九九乘法表


输出九九乘法表。

public class MultiplicationTable {
    public static void main(String[] args) {
        for(int i=1;i<=9;i++) {
            for(int j=1;j<=i;j++) {
                System.out.print(j+"×"+i+"="+i*j+"\t");// \t 跳到下一个TAB位置
            }
            System.out.println();
        }
    }
}



Java 实例 – 打印三角形


首先,确定我们的输出结果是:


那么我们怎么才能做到这样呢?


1、首先分析图形的结构


我们可以看到,图形共5行,那么,我们是否可以建立一个for循环语句,使其控制在5行?答案是肯定的。

for(int i = 1 ;i <= 5 ;i++ ){
}


这样,我们就建立了一个循环5次的for循环代码块,为最外圈的循环。


2、然后,分析图形是怎样构成的,我们可以把图形拆分为以下几部分:


图片说明


我们可以把图形拆分为这样三个三角形。


3、建立1号空白三角形


可以看,第一行是输出4个空格,第二行输出3个空格,第三行输出2个,第四行输出1个,第五行没有


从这个规律可以看出,是依次递减的规律,那么如何实现呢?


我们可以想象从1到5,中间有四个数字;从2到5中间有3个数字,从3到5……


是不是可以利用这个原理呢?答案是当然的。那么如何实现?请看代码:

for(int i = 1;i<=5 ;i++) {
    for(int j = 5; j >= i ; j--)//建立1号图形
        System.out.print(" ");
    System.out.println();
}


第一个for语句就是刚才定义的五次循环语句


第二个for循环,我们来进行解析:


首先 定义一个int类型的j变量,给j赋值为5


然后我们想,既然要缩短距离,那么每次循环j就-1,那么刚好符合我们的要求:


第一次大循环 i=1,j=5, 所以符合j>=i的条件然后输出一个空格,然后j-1,现在j的值为4符合j>=i,再输出


……


一直到j=0,j>=i不符合,跳出内循环


现在到System.out.println(); 换行


现在回到外循环 i++ ,i变成2,符合i<=5,进入内循环


定义j=5 , j>=i,符合,输出一个空格,j-1


j现在为4 ,j>=i,符合,输出一个空额,j-1


……


一直到j=1,j>=i,不成立,跳出内训还,然后换行


然后i+1 然后再进入内循环……


如此循环下去 形成了一个四行的倒三角,1号图案形成。


4、建立2号图形,和1号图形原理完全相同,不过正好相反

for(int i = 1 ;i<=5 ;i++){
    for(int j = 5; j >= i ; j--)//建立1号图形
        System.out.print(" ");
    for(int j = 1; j <= i; j++)//建立2号图形
        System.out.print("*");
    System.out.println();
}


如建立1号图形相同,大家可以自己理解,如此2号建立


5、建立3号图形

for(int i = 1; i <= 5; i++){
    for(int j = 5 ;i <= j; j--)//建立1号图形
        System.out.print(" ");
    for(int j = 1; j <= i; j++)//建立2号图形
        System.out.print("*");
    for(int j = 1; j < i; j ++)//建立3号图形
        System.out.print("*");
}


同样,如同1号二号相同,建立3号图形原理相同


但是大家注意一点,3号图形没有在第一行输出,所以要在第一次大循环中掐断它,让它在第二次大循环中输出


所以 这次的判断条件为 j < i 去掉了等于。

class Demo{
    public static void main(String[] args){
        for(int i=1;i<=5;i++){
            for(int j=5; i<=j; j--)
                System.out.print(" ");
            for(int j=1; j<=i; j++)
                System.out.print("*");
            for(int j=1; j<i; j++)
                System.out.print("*");
            System.out.println();
        }
    }
}

相关文章
|
1月前
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
116 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
27天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
1月前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
61 2
|
1月前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
121 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
1月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
191 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
2月前
|
存储 Java
Java之静态(static)与实例(instance)
Java之静态(static)与实例(instance)
|
1月前
|
Java
java的Random类和Arrays.sort类使用实例
java的Random类和Arrays.sort类使用实例
11 0
|
存储 Java 关系型数据库
20 个实例玩转 Java 8 Stream
20 个实例玩转 Java 8 Stream
278 0
20 个实例玩转 Java 8 Stream
|
存储 Java 关系型数据库
20 个实例玩转 Java 8 Stream,写的太好了!
先贴上几个案例,水平高超的同学可以挑战一下: 从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。 统计员工的最高薪资、平均薪资、薪资之和。
20 个实例玩转 Java 8 Stream,写的太好了!
|
5天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
下一篇
无影云桌面