使用java打印心型、圆形图案的实现代码

 更新时间:2020年12月01日 11:02:35   作者:清风丿自来  
这篇文章主要介绍了使用java打印心型、圆形图案的实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

相信对于打印三角形都没什么难度,只需要利用for循环嵌套使用就行

但是对于打印圆形和三角形不同因为到圆心距离相等的点一般不会横坐标和纵坐标都为整数

打印爱心

爱心的公式 (x²+y²-1)³-x²*y³=0

调用此方法即可打印爱心图案

 /**
 *打印心形
 */
 public static void aiXin(){
   for(float y = (float) 1.5;y>-1.5;y -=0.1) { 
    for(float x= (float) -1.5;x<1.5;x+= 0.05){ 
     float a = x*x+y*y-1; 
     if((a*a*a-x*x*y*y*y)<=0.0) { 
       System.out.print("^"); 
     } 
     else 
       System.out.print(" "); 
    } 
    System.out.println(); 
  } 
 }

打印圆形

打印圆形主要就是所有点到圆心的距离为半径即可

public static void circle(){
  int r=15;//圆形的半径
   for (int y = 0; y <= 2 * r; y += 2) {//y的步长为2,改变y的步长可以将圆形变成椭圆 
   int x = (int)Math.round(r - Math.sqrt(2 * r * y - y * y)); 
   int len = 2 * (r - x); 
   for (int i = 0; i <= x; i++) { 
    System.out.print(' '); 
   }
   System.out.print('*'); 
   for (int j = 0; j <= len; j++) { 
    System.out.print(' '); 
   } 
   System.out.println('*'); 
  } 
 }

效果如下

如果想打印实心的只需要把条件修改即可

 for (int j = 0; j <= len; j++) { 
    System.out.print('*'); 
  } 

此循环是打印圆形里面部分,输出字符就是实心圆

补充知识:在Java中打印金字塔图案

1、问题描述

打印出金字塔图案,如图1所示。

2、问题分析

这时一个很经典的循环应用的问题。我们都知道,打印输出的时候,都是从

最左端输出,而这里第一个三角形符号是在最中间,这实际是因为三角形之前有很多空格。当我们使用圆圈来表示空格,实际的输出效果应该是图2的形式。

分析图2,我们可以发现这个题目的奥秘。

(1) 确定程序框架

程序框架代码如下:

publicclass Ch1_1
{
  public static void main(String[] args)
  {
    *********
    for(i = 1; i<= 5; i++)  //循环5次,打印5行
    {
      //打印若干空格
      //打印若干符号
    }
  }
}

(2) 寻找空格和符号规律

表1 空格和符号规律

行数

空格数

符号数

1

4

5-1

1

1*2-1

2

3

5-2

3

2*2-1

3

2

5-3

5

3*2-1

4

1

5-4

7

4*2-1

5

0

5-5

9

5*2-1

规律

依次递减1

5-行数

依次递增2

行数*2-1

(3) 打印空格数

由于每行空格数有“5-行数”的规律,对应代码如下:

for(i =1; i<= n; i++)
{
  for(j = 1; j <= n – i; j++)  //根据外层行号,输出符号左边空格
    System.out.println(“ ”);
}

(4) 打印符号数

由于每行符号数有着“行数*2-1”的规律,对应代码如下:

for(i =1; i<= n; i++)
{
  for(k = 1; j <= i * 2 -1; k++) //根据外层行号,输出符号数
    System.out.println(“*”);
}

(5) 完整程序

importjava.util.Scanner;
publicclass Ch1_1
{
  public static void main(String[] args)
  {
    int i, j, k, n;
    Scanner input = new Scanner(System.in);
    System.out.print("请输入金字塔层数:");
    n = input.nextInt();
    //外层循环控制层数
    for(i = 1; i <= n; i++)
    {
      //根据外层行号,输出星号左边的空格
      for(j = 1; j <= n - i; j++)
       System.out.printf(" ");
      //根据外层行号,输出星号个数
      for(k = 1; k <= 2 * i -1; k++)
       System.out.print("*");
      //一行结束,换行
      System.out.print("\n");
    }
  }
}
/*
 *注:Java中的print、printf、println
*/

程序运行结果,见图3。

(6) 扩展

倒金字塔

importjava.util.Scanner;
publicclass Ch1_1
{
  public static void main(String[] args)
  {
    int i, j, k, n;
    Scanner input = new Scanner(System.in);
    System.out.print("请输入倒金字塔层数:");
    n = input.nextInt();
    //外层循环控制层数
    for(i = 1; i <= n; i++)
    {
      //根据外层行号,输出星号左边的空格
      for(j = 1; j <= i - 1; j++)
       System.out.printf(" ");
      //根据外层行号,输出星号个数
      for(k = 1; k <= 2 * (n - i) -1;k++)
       System.out.print("*");
      //一行结束,换行
      System.out.print("\n");
    }
  }
}

直角三角形

importjava.util.Scanner;
publicclass Ch1_1
{
  public static void main(String[] args)
  {
    int i, j, k, n;
    Scanner input = new Scanner(System.in);
    System.out.print("请输入直角三角形层数:");
    n = input.nextInt();
    //外层循环控制层数
    for(i = 1; i <= n; i++)
    {
      //根据外层行号,输出星号个数
      for(k = 1; k <= n - i + 1; k++)
       System.out.print("*");
      //一行结束,换行
      System.out.print("\n");
    }
  }
}

以上这篇使用java打印心型、圆形图案的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springboot的类加载器(org.springframework.boot.loader)过程详解

    springboot的类加载器(org.springframework.boot.loader)过程详解

    这篇文章主要介绍了springboot的类加载器(org.springframework.boot.loader),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java基于elasticsearch实现集群管理

    Java基于elasticsearch实现集群管理

    这篇文章主要介绍了java基于elasticsearch实现集群管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • java中使用Files.readLines()处理文本中行数据方式

    java中使用Files.readLines()处理文本中行数据方式

    这篇文章主要介绍了java中使用Files.readLines()处理文本中行数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring Boot2+JPA之悲观锁和乐观锁实战教程

    Spring Boot2+JPA之悲观锁和乐观锁实战教程

    这篇文章主要介绍了Spring Boot2+JPA之悲观锁和乐观锁实战教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • SpringBoot + layui 框架实现一周免登陆功能示例详解

    SpringBoot + layui 框架实现一周免登陆功能示例详解

    这篇文章主要介绍了SpringBoot+layui框架实现一周免登陆功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Spring实现声明式事务的方法详解

    Spring实现声明式事务的方法详解

    这篇文章主要介绍了Spring实现声明式事务的方法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • SpringBoot实现分库分表

    SpringBoot实现分库分表

    这篇文章主要介绍了SpringBoot实现分库分表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring核心容器之Bean创建过程详解

    Spring核心容器之Bean创建过程详解

    这篇文章主要介绍了Spring核心容器之Bean创建过程详解,获取 Bean 的方法是 getBean,其来自 BeanFactory 继承的AbstractAutowireCapableBeanFactory 抽象类继承的AbstractBeanFactory 抽象类中,需要的朋友可以参考下
    2023-11-11
  • 详解SpringBoot结合策略模式实战套路

    详解SpringBoot结合策略模式实战套路

    这篇文章主要介绍了详解SpringBoot结合策略模式实战套路,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Java数据结构顺序表的详细讲解

    Java数据结构顺序表的详细讲解

    大家好,今天给大家带来的是顺序表,我觉得顺序表还是有比较难理解的地方的,于是我就把这一块的内容全部整理到了一起,希望能够给刚刚进行学习数据结构的人带来一些帮助,或者是已经学过这块的朋友们带来更深的理解,我们现在就开始吧
    2022-05-05

最新评论